java http协议如何获取响应内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java http协议如何获取响应内容相关的知识,希望对你有一定的参考价值。

通过本站发一个请求到另一个网站,如何获取它的响应信息 并进行筛选自己需要的内容
URLConnection connection = this.url.openConnection();
connection.setDoOutput(true);
PrintWriter out = new PrintWriter(connection.getOutputStream());
Enumeration enumKey = this.request.keys();
while (enumKey.hasMoreElements())
String name = (String) enumKey.nextElement();
String value = (String) this.request.get(name);
char ch;
if (enumKey.hasMoreElements())
ch = '&';
else
ch = ' ';
out.print(name + "=" + URLEncoder.encode(value) + ch);

-----------------------------------------
Hashtable response = new Hashtable();
String line = "";
while ((line = in.readLine()) != null)
int i = line.indexOf("=");
if (i != -1)
response.put(line.substring(0, i), line.substring(i + 1));

in.close();
这两段代码是同一个方法里的 请问这两段代码什么意思 请大侠尽可能详细说明 感激不尽

用XStream可以将一个java对象序列化成一个xml文件,然后通过http请求将该文件发送过去,然后在另一个网站也用XStream将java对象反序列化回来。反之也是同理。 参考技术A String url = "";
// 获得httpClient
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
// 执行请求获取返回response
HttpResponse response = httpClient.execute(httpPost);
// 获得返回数据
HttpEntity entity = response.getEntity();
// 对返回数据进行操作
...

java中如何设置HTTP协议的头信息(header)

在Java中怎样可以设置HTTP协议的header,可以使用request.getHeader(param)方法可以获取值,我用了response.setHeader(..)和response.addHeader(..)取出来都是空的,哪位大虾知道呀……小弟在此谢过

首先,我们先看一下http的头信息到底是什么:
HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。
在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:
HttpResponse response = null;
HttpGet get = new HttpGet(url);
get.addHeader("Accept", "text/html");
get.addHeader("Accept-Charset", "utf-8");
get.addHeader("Accept-Encoding", "gzip");
get.addHeader("Accept-Language", "en-US,en");
get.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
response = client.execute(get);
HttpEntity entity = response.getEntity();
Header header = entity.getContentEncoding();
if (header != null)

HeaderElement[] codecs = header.getElements();
for (int i = 0; i < codecs.length; i++)

if (codecs[i].getName().equalsIgnoreCase("gzip"))

response.setEntity(new GzipDecompressingEntity(entity));



return response;
其中,client为一个HttpClient的实力,创建方式如:
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(2);
HttpHost googleResearch = new HttpHost("research.google.com", 80);
HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80);
cm.setMaxPerRoute(new HttpRoute(googleResearch), 30);
cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50);
DefaultHttpClient client = new DefaultHttpClient(cm);
参考技术A headers.set("Authorization", "Bearer "+授权码);
将授权码放到头信息中
参考技术B 在Servlet类的service方法里面写:response.setHeader(..);response.addHeader(..)
在跳转的目标页面取 就能取到了
参考技术C response.setHeader等必须在代码最开始写入

否则数据流如果已经发给客户端,那么HTTP头是改不了的本回答被提问者和网友采纳
参考技术D http://blog.csdn.net/zliu789/archive/2009/02/13/3885919.aspx

以上是关于java http协议如何获取响应内容的主要内容,如果未能解决你的问题,请参考以下文章

java啥是响应信息?

HTTP协议/AJAX异步请求-01

无法获取http响应内容

如何才能获取到http的响应状态码

如何获取HTTP请求响应问号

如何读取和复制 HTTP servlet 响应输出流内容以进行日志记录