私が構築した Web サービスがあります... 私が今しようとしているのは、JSON クエリ文字列を含む単純な要求をタペストリー Web アプリからその Web サービスに送信することです。私は周りを検索しましたが、ほとんどの人はこれを達成するために Apache HttpClient を使用すると言っています。HttpClient とともに、URIBuilder を使用しています。
送信しようとしているJsonオブジェクトは次のようになります
{"user":{"userEmail":"jdoe@gmail.com","firstName":"John","lastName":"Doe","phone":"203- 555-5555"},"password" :"死"}
*パスワードがプレーンテキストで送信されるなどの問題を認識しています...
機能する URL (Web ブラウザーに手動で入力することによってテストされ、この Web サービスは既に Android クライアントと iOS クライアントにサービスを提供しています) は次のようになります。
http:// ##.##.###.##/createuser?json={"user":{"userEmail":"jdoe@gmail.com","firstName":"John","lastName" :"Doe","phone":"203-555-5555"},"password":"dead"}
これは、なぜこれがうまくいかないのかを理解しようとして、Google で検索してまとめた HttpClient コードです。基本的に、私がやろうとしているのは、URIBuilder で URI を作成し、新しく構築された URI で HttpPost または HttpGet オブジェクトを構築することです。しかし、URIBuilding プロセスで何か問題が発生しています。デバッグ時に、URI のすべての側面を設定しようとすると例外がスローされます。
Object onSuccess() throws ClientProtocolException, IOException, URISyntaxException{
// json = {"user":{"userEmail":"jdoe@gmail.com","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;
コードでコメントした行をまたぐと戻ってくるエラーは
[エラー] TapestryModule.RequestExceptionHandler リクエストの処理がキャッチされない例外で失敗しました: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;
このリクエストをサーバーに正しく送信するために、メソッドとオブジェクトの他の多くの組み合わせを試しましたが、何も機能していないようです。うまくいけば、私は比較的単純なものを見落としています。
あなたが提供できるガイダンスを前もって感謝します。