Java httpclient 4.1 如何使用可配置端口发送发布请求
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6096937/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Java httpclient 4.1 how to send post request with configurable port
提问by user63898
wow , i just can't find any working httpclient 4.1 example , to send post request with Not default port but configurable port , i have this code but its dosn't work
哇,我只是找不到任何可用的 httpclient 4.1 示例,要使用非默认端口但可配置端口发送 post 请求,我有此代码,但它不起作用
// 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);
getting this exception :
得到这个例外:
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.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)
is simple words how to define port ?
简单的话怎么定义端口?
回答by Vineet Reynolds
You are attempting to perform a lookup of the host name https://foo.com
and that's the problem; the lookup should have been against foo.com
. I'm not sure as to how you've arrived at the code in question, but it would be worth some time to take a look at the HttpClient tutorial.
您正在尝试查找主机名https://foo.com
,这就是问题所在;查找应该是针对foo.com
. 我不确定您是如何得到有问题的代码的,但值得花一些时间看一看HttpClient 教程。
If I'm not wrong, the following code, should be sufficient:
如果我没记错的话,下面的代码应该就足够了:
HttpPost httpost = new HttpPost(url); //construct the complete URL i.e. action to post to
httpost.setEntity(entity);
response = httpclient.execute(httpost);
where url is to be constructed with the http/https schema, host name, port and the rest of the resource URI.
其中 url 将使用 http/https 架构、主机名、端口和资源 URI 的其余部分构建。