Java httpclient 4.1如何通过可配置的端口发送发布请求

问题描述

| 哇,我只是找不到任何有效的httpclient 4.1示例,要使用非认端口发送帖子请求 但可配置的端口,我有代码,但它没有工作
// lHashMapParams is with params getting form function .. 

List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
        for (String key : lHashMapParams.keySet()) {
            String val = lHashMapParams.get(key);
            params.add(new BasicNameValuePair(key,val));

}
String url = \"https://foo.com\";
int port = 8883;
String = \"https\";
UrlEncodedFormEntity query = new UrlEncodedFormEntity(params);
        HttpHost httpHost = new HttpHost(url,port,httpType); 

        HttpPost post = new HttpPost(\"/\");
        post.setEntity(query);


        HttpResponse response_ = httpclient.execute(httpHost,post);
得到这个异常:
log4j:WARN Please initialize the log4j system properly.
java.net.UnkNownHostException: https://foo.com
    at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:849)
    at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1183)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1136)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1109)
    at java.net.InetAddress.getAllByName(InetAddress.java:1072)
    at org.apache.http.impl.conn.DefaultClientConnectionoperator.resolveHostname(DefaultClientConnectionoperator.java:242)
    at org.apache.http.impl.conn.DefaultClientConnectionoperator.openConnection(DefaultClientConnectionoperator.java:130)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:561)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776)
    at com.ut.HttpClientImpl.postHttpReqest(HttpClientImpl.java:75)  
简单的话怎么定义端口?     

解决方法

您正在尝试执行主机名“ 2”的查找,这就是问题所在;查找应该针对
foo.com
。我不确定您是如何获得有关代码的,但是值得花些时间看看HttpClient教程。 如果我没看错,那么下面的代码应该足够了:
HttpPost httpost = new HttpPost(url); //construct the complete URL i.e. action to post to
httpost.setEntity(entity);
response = httpclient.execute(httpost);
使用http / https模式,主机名,端口和资源URI的其余部分构造url的位置。