zoukankan      html  css  js  c++  java
  • Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete

    逻辑:

    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;
    }

    }

  • 相关阅读:
    解决RobotFramework的关键字不能高亮的问题
    使用Python遇到:'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte 问题
    通过Jekins执行bat脚本始终无法完成
    Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
    [转]The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    HDU 2686 MCMF
    HDU 4278 卡特兰,区间DP
    POJ 2985 名次树
    POJ 2531 深搜剪枝
    Uva 10061 进制问题
  • 原文地址:https://www.cnblogs.com/xgjblog/p/3918960.html
Copyright © 2011-2022 走看看