http Request-Line


以下代码通过jdk自带的HttpURLConnection获取百度对关键字"angry brids"的搜索结果。

        URL baiduSearch = new URL("http://www.baidu.com/s?wd=angry birds");
        HttpURLConnection connection = (HttpURLConnection) baiduSearch.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoInput(true);
        ... ...
        connection.setRequestProperty("Host", "www.baidu.com");
        connection.getOutputStream().flush();
        InputStream inputStream = connection.getInputStream();

但是用wireshark抓包发现http请求的参数不符合预期。
请求行(Request-Line)是POST /s?wd=angry bird HTTP/1.1,按照RFC2616的定义
   Request-Line = Method SP Request-URI SP HTTP-Version CRLF
预期的结果是

Method Request-URI HTTP-Version
POST /s?wd=angry bird HTTP/1.1

而实际由于查询参数"angry birds"中的空格,请求是

Method Request-URI HTTP-Version
POST /s?wd=angry bird HTTP/1.1

见下图红框内容


因此需要在构造url的时候对path "s?wd=angry birds"部分做编码,可以使用jdk的java.net.URLEncoder。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值