我有一個我建立的Web服務...我現在要做的是發送一個簡單的請求,其中包含一個json查詢字符串一個Tapestry Web應用程序到該Web服務。我四處搜索,大多數人都說使用Apache HttpClient來實現這一點。與HttpClient一起,我正在使用URIBuilder。使用HttpClient將URL中的JSON查詢字符串發送到Web服務(Java)
,我試圖發送看起來像這樣{"user":{"userEmail":"[email protected]","firstName":"John","lastName":"Doe","phone":"203- 555-5555"},"password":"dead"}
*我實現與密碼的問題,以純文本等發送
JSON對象...
,工程的URL(測試通過在Web瀏覽器中手動輸入這個Web服務已經服務的Android客戶端,並在iOS客戶端)看起來像這樣
http:// ##.##.###.##/createuser?json={"user":{"userEmail":"[email protected]","firstName":"John","lastName":"Doe","phone":"203-555-5555"},"password":"dead"}
這裏是HttpClient的代碼,我有m個谷歌一起試圖找出爲什麼這將無法正常工作。基本上我想要做的是用URIBuilder創建一個URI,然後用新建的URI構造一個HttpPost或HttpGet對象。但是URIBuilding過程中出現了問題。當我調試時,當我嘗試設置URI的所有方面時會引發異常。
Object onSuccess() throws ClientProtocolException, IOException, URISyntaxException{
// json = {"user":{"userEmail":"[email protected]","firstName":"John","lastName":"Doe","phone":"203- 555-5555"},"password":"dead"}
String json = user.toJson();
URIBuilder builder = new URIBuilder();
// Error gets thrown when I step over the next line
builder.setScheme("http").setHost("##.###.##.###").setPort(8080).setPath("createuser").setQuery("json=" +json);
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
DefaultHttpClient httpClient = new DefaultHttpClient();
String tmp = request.getURI().toString();
HttpResponse response = httpClient.execute(request);
index.setResponse(EntityUtils.toString(response.getEntity()));
return index;
說回來,當我跨過我的代碼註釋行的錯誤是
[ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception:org.apache.http.client.utils.URLEncodedUtils.parse(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/util/List; java.lang.NoSuchMethodError:org.apache.http.client.utils.URLEncodedUtils.parse(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/util/List;
我已經嘗試了很多的方法和對象等組合得到這個請求發送正確地關閉服務器,似乎沒有任何工作。希望我能看到一些相對簡單的東西。
在此先感謝您提供的任何指導。
該錯誤意味着您使用的是HttpClient庫的錯誤版本。 – Luciano 2012-08-10 02:57:50
我應該使用什麼版本?我從這裏下載了包含所有jar的zip文件http://hc.apache.org/downloads.cgi – mfunaro 2012-08-10 03:07:22
這取決於調用方法的庫。檢查該庫的文檔以查看它是否列出了它的依賴關係。 – Luciano 2012-08-10 03:13:56