首页 > 编程 > Java > 正文

Java发送post方法详解

2019-11-26 09:04:57
字体:
来源:转载
供稿:网友

总结一下java使用http发送post的方法:

1、post请求用于发送json 格式的参数:

/**   * post请求(用于请求json格式的参数)   *   * @param url  地址   * @param params json格式的参数   * @return   */  public static String doPost(String url, String params) throws Exception {     CloseableHttpClient httpclient = HttpClients.createDefault();    HttpPost httpPost = new HttpPost( url );// 创建httpPost    httpPost.setHeader( "Accept", "application/json" );    httpPost.setHeader( "Content-Type", "application/json" );    String charSet = "UTF-8";    StringEntity entity = new StringEntity( params, charSet );    httpPost.setEntity( entity );    CloseableHttpResponse response = null;     try {       response = httpclient.execute( httpPost );      StatusLine status = response.getStatusLine();      int state = status.getStatusCode();      if (state == HttpStatus.SC_OK) {        HttpEntity responseEntity = response.getEntity();        String jsonString = EntityUtils.toString( responseEntity );        return jsonString;      } else {        logger.error( "请求返回:" + state + "(" + url + ")" );      }    } finally {      if (response != null) {        try {          response.close();        } catch (IOException e) {          e.printStackTrace();        }      }      try {        httpclient.close();      } catch (IOException e) {        e.printStackTrace();      }    }    return null;  }

2、用于发送key-value格式的参数

/**   * post请求(用于key-value格式的参数)   *   * @param url   * @param params   * @return   */  public static String doPost(String url, Map params) {     BufferedReader in = null;    try {      // 定义HttpClient      HttpClient client = new DefaultHttpClient();      // 实例化HTTP方法      HttpPost request = new HttpPost();      request.setURI( new URI( url ) );       //设置参数      List<NameValuePair> nvps = new ArrayList<NameValuePair>();      for (Iterator iter = params.keySet().iterator(); iter.hasNext(); ) {        String name = (String) iter.next();        String value = String.valueOf( params.get( name ) );        nvps.add( new BasicNameValuePair( name, value ) );         //System.out.println(name +"-"+value);      }      request.setEntity( new UrlEncodedFormEntity( nvps, HTTP.UTF_8 ) );       HttpResponse response = client.execute( request );      int code = response.getStatusLine().getStatusCode();      if (code == 200) {  //请求成功        in = new BufferedReader( new InputStreamReader( response.getEntity()            .getContent(), "utf-8" ) );        StringBuffer sb = new StringBuffer( "" );        String line = "";        String NL = System.getProperty( "line.separator" );        while ((line = in.readLine()) != null) {          sb.append( line + NL );        }        in.close();         return sb.toString();      } else {  //        System.out.println( "状态码:" + code );        return null;      }    } catch (Exception e) {      e.printStackTrace();      return null;    }  }

第三,发送get请求

/**   * get请求   *   * @return   */  public static String doGet(String url) {    try {      HttpClient client = new DefaultHttpClient();      //发送get请求      HttpGet request = new HttpGet( url );      HttpResponse response = client.execute( request );      /**请求发送成功,并得到响应**/      if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {        /**读取服务器返回过来的json字符串数据**/        String strResult = EntityUtils.toString( response.getEntity() );        return strResult;      }    } catch (IOException e) {      e.printStackTrace();    }     return null;  }

以上所述是小编给大家介绍的Java发送post方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表