您的位置:首页 > 理论基础 > 计算机网络

Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete

2016-08-31 15:06 609 查看
逻辑:
String url = "http://www.baidu.com";
//将要访问的url字符串放入HttpPost中
HttpPost httpPost = new HttpPost(url);
//请求头 放置一些修改http请求头和cookie
httpPost.setHeader("Accept", "application/json");
......
//如果是HttpPost或者HttpPut请求需要在请求里加参数,而HttpGet或者HttpDelete请求则可以直接拼接到url字符串后面
//向HttpPost中加入参数
List<NameValuePair> values = new ArrayList<NameValuePair>();
values.add(new NameValuePair("id", "1"));
values.add(new NameValuePair("name", "xiaohong"));
httpPost.setEntity(new UrlEncodeFormEntity(values, HTTP.UTF_8));  //进行转码
 
//实例HttpClient 并执行带有HttpPost的方法,返回HttpResponse 响应,再进行操作
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(httpPost);
int statusCode = httpResponse.getStatusLine().getStatusCode();  //返回状态码 ,用来进行识别或者判断访问结果
if(statusCode == 200){
  Instream in = httpResponse.getEntity().getContent();  //要处理该数据流是否为GZIP流
}
 
 
示例代码如下:
package cn.dratek.haoyingsheng.manager.client;
import cn.dratek.haoyingsheng.manager.util.ResourceUtil;

import net.dratek.browser.http.Cookie;

import net.dratek.browser.http.CookieManager;

import net.dratek.browser.http.URL;

import org.apache.http.*;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpDelete;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.client.methods.HttpPut;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.protocol.HTTP;
import java.io.IOException;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import java.util.List;

public class HttpNetClient {

/**

* 所有get 请求底层调用方法

*

* @param url 请求url

* @return byte[] response data

*/

public static byte[] doGet(String url) {

InputStream in;

byte[] bre = null;

HttpResponse response;

CookieManager manager = CookieManager.getInstance();

if (url != null && url.length() != 0) {

URL myURL = URL.parseString(url);

Cookie[] cookies = manager.getCookies(myURL);

HttpGet httpGet = new HttpGet(url);

if (cookies != null && cookies.length > 0) {

StringBuilder sb = new StringBuilder();

for (Cookie ck : cookies) {

sb.append(ck.name).append('=').append(ck.value).append(";");

}

String sck = sb.toString();

if (sck.length() > 0) {

httpGet.setHeader("Cookie", sck);

}
}

httpGet.setHeader("Accept-Encoding", "gzip, deflate");

httpGet.setHeader("Accept-Language", "zh-CN");

httpGet.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");

try {

response = new DefaultHttpClient().execute(httpGet);

if (response != null) {

int statusCode = response.getStatusLine().getStatusCode();

if (statusCode == 200 || statusCode == 403) {

Header[] headers = response.getHeaders("Set-Cookie");

if (headers != null && headers.length > 0) {

for (Header header : headers) {

manager.setCookie(myURL, header.getValue());

}

}

in = response.getEntity().getContent();

if (in != null) {

bre = ResourceUtil.readStream(in);

}
}

}

} catch (IOException e) {

e.printStackTrace();

}

}

return bre;
}
/**

* 所有Post 请求底层调用方法

*

* @param url 请求url

* @param values 传递的参数

* @return byte[] 返回数据 or null

*/

public static byte[] doPost(String url, List<NameValuePair> values) {

System.out.println("url = " + url);

byte[] bytes = null;

HttpResponse response;

InputStream inputStream = null;

CookieManager manager = CookieManager.getInstance();

if (url != null && url.length() != 0) {

URL myurl = URL.parseString(url);

Cookie[] cookies = manager.getCookies(myurl);

HttpPost post = new HttpPost(url);

if (cookies != null && cookies.length > 0) {

StringBuilder sb = new StringBuilder();

for (Cookie ck : cookies) {

sb.append(ck.name).append('=').append(ck.value).append(";");

}

String sck = sb.toString();

if (sck.length() > 0) {

post.setHeader("Cookie", sck);

}
}

post.setHeader("Accept-Encoding", "gzip, deflate");

post.setHeader("Accept-Language", "zh-CN");

post.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");

DefaultHttpClient client = new DefaultHttpClient();

try {

if (values != null && values.size() > 0) {

post.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8));

}

response = client.execute(post);

if (response != null) {

int statusCode = response.getStatusLine().getStatusCode();

if (statusCode == 200 || statusCode == 403) {

Header[] headers = response.getHeaders("Set-Cookie");

if (headers != null && headers.length > 0) {

for (Header header : headers) {

manager.setCookie(myurl, header.getValue());

}

}

inputStream = response.getEntity().getContent();

}

}
} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

if (inputStream != null) {

bytes = ResourceUtil.readStream(inputStream);

}

}

return bytes;

}
/**

* PUT基础请求

*

* @param url 请求地址

* @param values 提交参数

* @return byte[] 请求成功后的结果

*/

public static byte[] doPut(String url, List<NameValuePair> values) {

byte[] ret = null;
CookieManager manager = CookieManager.getInstance();

if (url != null && url.length() > 0) {

URL myUrl = URL.parseString(url);

StringBuilder sb = new StringBuilder();

Cookie[] cookies = manager.getCookies(myUrl);

if (cookies != null && cookies.length > 0) {

for (Cookie cookie : cookies) {

sb.append(cookie.name).append("=").append(cookie.value).append(";");

}
}

HttpPut request = new HttpPut(url);

String sck = sb.toString();

if (sck.length() > 0) {

request.setHeader("Cookie", sck);

}

request.setHeader("Accept-Encoding", "gzip, deflate");

request.setHeader("Accept-Language", "zh-CN");

request.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");
DefaultHttpClient client = new DefaultHttpClient();

if (values != null && values.size() > 0) {

try {

UrlEncodedFormEntity entity;

entity = new UrlEncodedFormEntity(values);

request.setEntity(entity);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

try {

HttpResponse response = client.execute(request);

if (response != null) {

StatusLine statusLine = response.getStatusLine();

int statusCode = statusLine.getStatusCode();

if (statusCode == 200 || statusCode == 403) {

Header[] headers = response.getHeaders("Set-Cookie");

if (headers != null && headers.length > 0) {

for (Header header : headers) {

manager.setCookie(myUrl, header.getValue());

}

}

HttpEntity entity = response.getEntity();

InputStream inputStream = entity.getContent();

if (inputStream != null) {

ret = ResourceUtil.readStream(inputStream);

inputStream.close();

}

}

}

} catch (IOException e) {

e.printStackTrace();

}

}

return ret;

}
/**

* Delete基础请求

*

* @param url 请求地址

* @return 请求成功后的结果

*/

public static byte[] doDelete(String url) {
InputStream in;

byte[] bre = null;

HttpResponse response;

CookieManager manager = CookieManager.getInstance();

if (url != null && url.length() != 0) {

URL myurl = URL.parseString(url);

Cookie[] cookies = manager.getCookies(myurl);

HttpDelete delete = new HttpDelete(url);

if (cookies != null && cookies.length > 0) {

StringBuilder sb = new StringBuilder();

for (Cookie ck : cookies) {

sb.append(ck.name).append('=').append(ck.value).append(";");

}

String sck = sb.toString();

if (sck.length() > 0) {

delete.setHeader("Cookie", sck);

}
}

delete.setHeader("Accept-Encoding", "gzip, deflate");

delete.setHeader("Accept-Language", "zh-CN");

delete.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");

try {

response = new DefaultHttpClient().execute(delete);

if (response != null) {

int statusCode = response.getStatusLine().getStatusCode();

if (statusCode == 200 || statusCode == 403) {

Header[] headers = response.getHeaders("Set-Cookie");

if (headers != null && headers.length > 0) {

for (Header header : headers) {

manager.setCookie(myurl, header.getValue());

}

}

in = response.getEntity().getContent();

if (in != null) {

bre = ResourceUtil.readStream(in);

}
}

}

} catch (IOException e) {

e.printStackTrace();

}

}

return bre;

}
 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: