2013-01-11 62 views
0

所以我有一個ArrayListString對象,我想使用Apache Http客戶端發送Http POST請求。URL編碼在java中用換行符的文本

我現在在做的是將列表對象連接到一個新的String,其後跟一個System.getProperty("line.separator")作爲換行符。 但是,我收到服務器的錯誤迴應,告訴我的URL格式不正確。 在此先感謝您的幫助!

ArrayList<String> episodeList 
String episodesAsString = ""; 

    for(String s : episodeList)  
      episodesAsString = episodesAsString.concat(s + NL); 

     URI uri = new URI(
       "https", 
       "my.domain.com", 
       "/path/add?this=123456&application=myApp&event=myEvent&description=" + episodesAsString, 
       null); 


    HttpClient client = new DefaultHttpClient(); 
    HttpPost request = new HttpPost(uri); 
    HttpResponse response = client.execute(request); 
+0

如果這是一個POST請求,爲什麼您在URL中發送有效負載而不是POST數據?另一端是否需要? – fge

+0

現在這是一個很好的問題。對不起,我會盡快解決! – tzippy

+0

嘗試發送您的負載作爲POST的請求正文,也許嘗試PostMethod post = new PostMethod(url); \t \t post.addRequestHeader(「Content-Type」,contentType); – justMe

回答

0

在您的情況下,您並未發送POST數據。這個問題可能是由於網址不正確。

試試這個:

String strUrl = "http://localhost:7001/RESTFUL_Tutorial/rest/hello/test1/test naveen kumar/test pwd"; 

URL url = new URL(strUrl); 
// for getting URI 
URI urlinfo = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); 
// for getting URL 
url = urlinfo.toURL(); 

更多更好地利用URLEncoder

地方您的網址.. :)

0

似乎由NL你的意思是換行字符。取而代之,在對所有字符串進行協商後,使用\n而不是NL,使用URLEncoder對字符串進行編碼。同時檢查該URL是否在調試中被嚴重傳遞。

0

我認爲URI是問題。儘管我認爲你可以使用它來構建一個合適的URL,但你在主機名之前缺少'//'。我你的榜樣,我相信請求將前往:

https:my.domain.com/path/addthis=123456&application=myApp&event=myEvent&description=XXX 

這是基於我只花了讀書的URI類的Javadoc中的5分鐘。您可以通過在代理或嗅探器上進行測試,並查看頭文件的有效內容。