Java 如何将类型字符串变量传递给HttpPost?

Java 如何将类型字符串变量传递给HttpPost?,java,eclipse,http-post,httpclient,Java,Eclipse,Http Post,Httpclient,我正在使用Java,并试图使用连接字符串形成URL。然后将其作为要发布到的URI传递给HttpPost 此代码失败: String str1 = "http://www.example.com"; String str2 = "/directory"; HttpPost httppost = new HttpPost(str1 + str2); 这也失败了: HttpPost httppost = new HttpPost(str1.concat(str2)); 正如这一点: String

我正在使用Java,并试图使用连接字符串形成URL。然后将其作为要发布到的URI传递给HttpPost

此代码失败:

String str1 = "http://www.example.com";
String str2 = "/directory";

HttpPost httppost = new HttpPost(str1 + str2);
这也失败了:

HttpPost httppost = new HttpPost(str1.concat(str2));
正如这一点:

String strCombined = str1 + str2;
HttpPost httppost = new HttpPost(strCombined);
然而,这是可行的:

HttpPost httppost = new HttpPost("http://www.example.com/directory");
我错过了什么

编辑:堆栈跟踪:

05-31 01:43:29.973: W/System.err(451): java.net.UnknownHostException: http
05-31 01:43:29.983: W/System.err(451):  at java.net.InetAddress.lookupHostByName(InetAddress.java:513)
05-31 01:43:29.993: W/System.err(451):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:278)
05-31 01:43:29.993: W/System.err(451):  at java.net.InetAddress.getAllByName(InetAddress.java:242)
05-31 01:43:30.003: W/System.err(451):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
05-31 01:43:30.013: W/System.err(451):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-31 01:43:30.013: W/System.err(451):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-31 01:43:30.024: W/System.err(451):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
05-31 01:43:30.033: W/System.err(451):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-31 01:43:30.043: W/System.err(451):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-31 01:43:30.043: W/System.err(451):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

理论上这不是我们可以期待的,对吗?那么是什么原因让你在这里感到不安。。 您与我们共享的代码可能是简化版本(为了更好的可读性),而不是您的实际代码,对吗?这让我觉得您的实际代码中可能有一个打字错误或任何其他简单的错误,这可能要复杂得多(并且很难找到简单的错误/打字错误/错误)

这可能是一个方法或构造函数,如

public HttpPost getConnection(String str1){
 String strCombined = this.domain+ str1;
 HttpPost httppost = new HttpPost(strCombined);
}
在这种情况下,我要做的第一件事是,在将strCombined提交给HttpPost构造函数之前打印它,看看它是否是我真正期望的

public HttpPost getConnection(String str1){
 String strCombined = this.domain+ str1;
 System.out.print("strCombined : "+strCombined);
 HttpPost httppost = new HttpPost(strCombined);
}

这可能是多线程应用程序的一个简单部分,然后您必须确保此方法是线程安全的

“失败”是非描述性的。他们都以同样的方式“失败”吗?您可以发布失败(异常)是什么吗?您缺少帮助我们诊断问题的其他信息--传递给ctor的字符串值在所有情况下都是相同的。不确定我缺少什么,这可能是我遇到的问题。字符串值在每种情况下都应该是相同的-但它的行为不是这样的。我真的怀疑它失败仅仅是因为你连接了字符串,尝试创建一个新的URL并将字符串传递给它。然后将URL传递给HTTPPost。看看它是否有效。堆栈跟踪不是从调用构造函数开始的。请再给我们看一点代码。