可以对http请求中的参数设置编码方式吗?如何设置
答案:2 悬赏:60 手机版
解决时间 2021-02-13 04:43
- 提问者网友:蔚蓝的太阳
- 2021-02-12 08:16
可以对http请求中的参数设置编码方式吗?如何设置
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-02-12 08:28
HTTP请求方式有两种,一种是GET方式,请求参数会用“?”作为分隔符跟在请求资源后面;另一种是POST方式,请求参数放在了最后面的位置。
服务器监听到浏览器的链接,首先将HTTP请求信息保存下来,再进行解析。
// 请求信息的输入流
private InputStream input;
//获得HTTP请求信息,并解析出请求使用的是GET还是POST,然后调用相应的处理方法进行处理
public void parseInput(){
byte [] b = new byte[1024];
try {
input.read(b);
} catch (IOException e) {
LogInfo.error("读取请求信息出错"+e.getMessage());
return;
}
String inputStr = new String(b);
String type = inputStr.substring(0,inputStr.indexOf(" "));
if("GET".equals(type)){
parseGetString(inputStr);
}
else{
parsePostString(inputStr);
}
}
//路径信息,,其中/CCB表示pathInfo
private String pathInfo;
//请求资源路径,pathInfo中最后一个斜杆后米啊的字符串,如/bank/CCB,其中/CCB表示urlPattern
private String urlPattern;
//请求参数,在Get请求中第一个问号后面的字符串,如account=abc&pwd=123
private String queryStr;
//解析GET请求
public void parseGetString(String getStr){
String allStr = getStr;
String info = allStr.substring(allStr.indexOf("/"),allStr.indexOf(" HTTP"));
int end = info.indexOf("?");
if(end == -1){
pathInfo = info;
}else{
pathInfo = info.substring(0,end);
queryStr = info.substring(end + 1);
}
urlPattern = pathInfo.substring(pathInfo.lastIndexOf("/"));
parseQueryInfo(queryStr);
}
//解析POST请求
public void parsePostString(String postStr){
String qStr = postStr.trim();
pathInfo = postStr.substring(postStr.indexOf("/"),postStr.indexOf(" HTTP"));
urlPattern = pathInfo.substring(pathInfo.lastIndexOf("/"));
queryStr = qStr.substring(qStr.lastIndexOf(System.getProperty("line.separator"))).trim();
parseQueryInfo(queryStr);
}
解析出请求资源路径和请求参数就可以找到对应的资源发送给浏览器或根据请求参数做相应的处理,再将资源发送回去。
服务器监听到浏览器的链接,首先将HTTP请求信息保存下来,再进行解析。
// 请求信息的输入流
private InputStream input;
//获得HTTP请求信息,并解析出请求使用的是GET还是POST,然后调用相应的处理方法进行处理
public void parseInput(){
byte [] b = new byte[1024];
try {
input.read(b);
} catch (IOException e) {
LogInfo.error("读取请求信息出错"+e.getMessage());
return;
}
String inputStr = new String(b);
String type = inputStr.substring(0,inputStr.indexOf(" "));
if("GET".equals(type)){
parseGetString(inputStr);
}
else{
parsePostString(inputStr);
}
}
//路径信息,,其中/CCB表示pathInfo
private String pathInfo;
//请求资源路径,pathInfo中最后一个斜杆后米啊的字符串,如/bank/CCB,其中/CCB表示urlPattern
private String urlPattern;
//请求参数,在Get请求中第一个问号后面的字符串,如account=abc&pwd=123
private String queryStr;
//解析GET请求
public void parseGetString(String getStr){
String allStr = getStr;
String info = allStr.substring(allStr.indexOf("/"),allStr.indexOf(" HTTP"));
int end = info.indexOf("?");
if(end == -1){
pathInfo = info;
}else{
pathInfo = info.substring(0,end);
queryStr = info.substring(end + 1);
}
urlPattern = pathInfo.substring(pathInfo.lastIndexOf("/"));
parseQueryInfo(queryStr);
}
//解析POST请求
public void parsePostString(String postStr){
String qStr = postStr.trim();
pathInfo = postStr.substring(postStr.indexOf("/"),postStr.indexOf(" HTTP"));
urlPattern = pathInfo.substring(pathInfo.lastIndexOf("/"));
queryStr = qStr.substring(qStr.lastIndexOf(System.getProperty("line.separator"))).trim();
parseQueryInfo(queryStr);
}
解析出请求资源路径和请求参数就可以找到对应的资源发送给浏览器或根据请求参数做相应的处理,再将资源发送回去。
全部回答
- 1楼网友:山君与见山
- 2021-02-12 09:15
用url.openconnection()得到一个urlconnection对象,然后用urlconnection.setrequestproperty()来设置头信息!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯