【问题标题】:how to create an http client for sending post request using java如何使用java创建一个用于发送post请求的http客户端
【发布时间】:2016-08-30 22:18:42
【问题描述】:

我想实现一个简单的 http 客户端,它可以使用 java 语言在请求的有效负载内发送带有一些额外标头和字符串 xml 正文内容的 http post 请求。

谁能推荐我怎么做。

谢谢

【问题讨论】:

标签: java http-post httpclient


【解决方案1】:

您可以使用java.net.HttpURLConnection 或第三方库,例如 Apache HttpClient。这是一个 StackOverflow 线程,您可以在其中找到加载 XML 的答案;

Write in body request with HttpClient

这个来自 MkYong 的例子有添加标题的示例代码;

https://www.mkyong.com/java/apache-httpclient-examples/

【讨论】:

  • 非常感谢!
【解决方案2】:

也许你可以使用它。HttpClient,apache 的subproject 之一。

这是一个演示:

import java.io.IOException;  
import java.io.UnsupportedEncodingException;  
import java.util.ArrayList;  
import java.util.List;  
import java.util.Map;  
import java.util.Set;    
import org.apache.http.HttpEntity;  
import org.apache.http.HttpResponse;  
import org.apache.http.NameValuePair;  
import org.apache.http.ParseException;  
import org.apache.http.client.ClientProtocolException;  
import org.apache.http.client.entity.UrlEncodedFormEntity;  
import org.apache.http.client.methods.HttpGet;  
import org.apache.http.client.methods.HttpPost;  
import org.apache.http.client.methods.HttpUriRequest;  
import org.apache.http.impl.client.DefaultHttpClient;  
import org.apache.http.message.BasicNameValuePair;  
import org.apache.http.protocol.HTTP;  
import org.apache.http.util.EntityUtils;  
import org.apache.log4j.Logger;  

public class HttpXmlClient {  
private static Logger log = Logger.getLogger(HttpXmlClient.class);  
public static String post(String url, Map<String, String> params) {  
    DefaultHttpClient httpclient = new DefaultHttpClient();  
    String body = null;  
    log.info("create httppost:" + url);  
    HttpPost post = postForm(url, params);            
    body = invoke(httpclient, post);            
    httpclient.getConnectionManager().shutdown();            
    return body;  
}        
public static String get(String url) {  
    DefaultHttpClient httpclient = new DefaultHttpClient();  
    String body = null;            
    log.info("create httppost:" + url);  
    HttpGet get = new HttpGet(url);  
    body = invoke(httpclient, get);            
    httpclient.getConnectionManager().shutdown();            
    return body;  
}          
private static String invoke(DefaultHttpClient httpclient,  
        HttpUriRequest httpost) {   
    HttpResponse response = sendRequest(httpclient, httpost);  
    String body = paseResponse(response);   
    return body;  
}    
private static String paseResponse(HttpResponse response) {  
    log.info("get response from http server..");  
    HttpEntity entity = response.getEntity();            
    log.info("response status: " + response.getStatusLine());  
    String charset = EntityUtils.getContentCharSet(entity);  
    log.info(charset);            
    String body = null;  
    try {  
        body = EntityUtils.toString(entity);  
        log.info(body);  
    } catch (ParseException e) {  
        e.printStackTrace();  
    } catch (IOException e) {  
        e.printStackTrace();  
    }            
    return body;  
}    
private static HttpResponse sendRequest(DefaultHttpClient httpclient,  
        HttpUriRequest httpost) {  
    log.info("execute post...");  
    HttpResponse response = null;            
    try {  
        response = httpclient.execute(httpost);  
    } catch (ClientProtocolException e) {  
        e.printStackTrace();  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
    return response;  
}   
private static HttpPost postForm(String url, Map<String, String>       params){            
    HttpPost httpost = new HttpPost(url);  
    List<NameValuePair> nvps = new ArrayList <NameValuePair>();            
    Set<String> keySet = params.keySet();  
    for(String key : keySet) {  
        nvps.add(new BasicNameValuePair(key, params.get(key)));  
    }            
    try {  
        log.info("set utf-8 form entity to httppost");  
        httpost.setEntity(new UrlEncodedFormEntity(nvps,   HTTP.UTF_8));  
    } catch (UnsupportedEncodingException e) {  
        e.printStackTrace();  
    }            
    return httpost;  
}  

}

你可以这样使用它:

Map<String, String> params = new HashMap<String, String>();  
params.put("name", name);  
params.put("password", password);       
String xml = HttpXmlClient.post(loginUrl, params);  
log.info(xml);  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 2013-01-18
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多