2012-05-31 33 views
0

我正在使用Java並嘗試使用連接字符串形成一個URL。然後這將作爲POST的URI傳遞給HttpPost。如何將一個String類型的變量傳遞給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) 
+1

「失敗」是非描述性的。他們都以同樣的方式「失敗」嗎?你可以發佈失敗(例外)是什麼? – billjamesdev

+0

您錯過了可幫助我們診斷問題的其他信息 - 傳遞給ctor的字符串值在所有情況下都是相同的。 –

+0

不知道我錯過了什麼,這可能是我遇到的問題。字符串值_should_在每種情況下都是相同的 - 但它不是那種方式。 – rockorager

回答

0

理論上,這不是我們可以期待,對不對?那麼可能是什麼原因讓您在這裏困擾.. 您與我們分享的代碼可能是簡化版本(爲了更好的可讀性)而不是您的實際代碼,對不對?這讓我覺得你可能在你的實際代碼中出現了打字錯誤或其他任何簡單的錯誤,這可能會更加複雜(並且很難找到簡單的錯誤/錯別字/錯誤)。

這可能是一個方法或構造,像

public HttpPost getConnection(String str1){ 
String strCombined = this.domain+ str1; 
HttpPost httppost = new HttpPost(strCombined); 
} 

最前一頁件事我會做在這樣的情況下,它給人以HttpPost構造函數之前打印strCombined,看看它是否是我真的期待。

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

這可能是多線程應用程序的一個簡單部分,那麼您必須確保此方法是線程安全的!

相關問題