1

サービスURLでJSONオブジェクトを渡す必要があるJSON Restful Webサービスを使用しています。JSON オブジェクトを正常に作成しましたが、URL がサーバーとの HTTP 接続を作成したときに例外が発生しました。

以下に私の URL を記載します。

 http://72.5.167.50:8084/UpdateProfileInfo?{"ProfileEditId":"917","ContactsEmail":[{"Email":"dsfs","ContactId":""}],"ContactsPhone":[{"CountryId":"+1","Type":"2","Phone":"345345"}],"ProfileId":"290","LastName":"demo","GroupId":"1212","Title":"sdf","City":"dsf","TemplateId":"1212","State":"dsf","AuthCode":"9bcc6f63-2050-4c5b-ba44-b8103fbc377a","Address":"sdf","FirstName":"demo","ContactId":"","Zip":"23","Company":"tv"}

コードjava.lang.IllegalArgumentException: Illegal character in queryに入る:

int TIMEOUT_MILLISEC = 100000; // 1000 milisec = 1 seconds
int SOCKET_TIMEOUT_MILISEC = 120000; // 2 minutes
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, SOCKET_TIMEOUT_MILISEC);
HttpClient client = new DefaultHttpClient(httpParams);
HttpPost request = new HttpPost(url);
HttpResponse response = client.execute(request);
responseString = request(response);

URL に何か問題がある場合は、私に提案してください。

*編集: *まだ例外を取得しているキーで試しました:

http://72.5.167.50:8084/UpdateProfileInfo?profileinof={"ProfileEditId":"917","ContactsEmail":[{"Email":"sdf","ContactId":""}],"ContactsPhone":[{"CountryId":"+1","Type":"2","Phone":"345345345"}],"ProfileId":"290","LastName":"demo","GroupId":"1212","Title":"dsf","City":"dsf","TemplateId":"1212","State":"dsf","AuthCode":"d968273a-0110-461b-8ecf-3f9c456d17ac","Address":"dsf","FirstName":"demo","ContactId":"","Zip":"23","Company":"tv"}
4

4 に答える 4

1

IP が正しくありません。

IP は 4 バイトで構成されます。すべてのバイトは 0 から 255 までの値で、7,000 にはなりません。

http:// 7232 .25.1617.50:1084

編集: 質問を編集しました。JSON をパラメーターとして送信しています。しかし、このパラメータには「キー」がありません。

次のようにする必要があります。

/UpdateProfileInfo? info ={"ProfileEditId":"917",[.......]

編集:これは次のようにする必要があると思います:

/UpdateProfileInfo? info ="{'ProfileEditId':'917',[.......]}"

値が で囲まれ"、内側"が に置き換えられていることに注意してください。'

于 2013-10-10T13:11:31.750 に答える
0

POJO を使用して、それらを JSON 文字列に変換し、その文字列情報を HTTP 経由で伝達する必要があることがわかります。それを可能にする優れたandroid/java/apache/volleyタイプのライブラリがたくさんあります。

ただし、理解できません。実際、JSON 文字列の転送に GET と URL パラメーターを使用するという要件に同意しませんか?

次のことを行うのは本当に簡単です。

POJO -> JSON へ -> toString -> http.string.entity へ -> POST

アーキテクチャを再検討し、GET ではなく POST の使用を検討してみてはいかがでしょうか。

次に、簡単な2ステップ:

"request.setEntity ( ... "

コードは次のようになります。

httpPost.setEntity(new StringEntity(pojo.toJSON().toString()));
于 2013-10-10T14:17:20.157 に答える