LoginSignup
10
14

More than 5 years have passed since last update.

[Android]URLエンコードしたjson形式のリクエストパラメータを送信する

Posted at

リクエスト形式はjsonなんだけど、マルチバイト(っていうか日本語)が入ってくるパターンがググってもイマイチ出てこなかったので忘備録。

request.java
// リクエストパラメータをセット       
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair(RequestParameters.AUTH_PARAM.toString(), myself.getAuthToken()));
params.add(new BasicNameValuePair(RequestParameters.HITOKOTO.toString(), message));

// URLエンコード
String entityValue = URLEncodedUtils.format(params, HTTP.UTF_8);
StringEntity se = new StringEntity(entityValue, HTTP.UTF_8);
// Content TypeはPOSTのヘッダと同じ         se.setContentType(URLEncodedUtils.CONTENT_TYPE);
url = http://localhost/hogehoge;

// リクエスト
HttpPut put = new HttpPut(url);
put.setEntity(se);

// レスポンス
HttpResponse httpResponse = client.execute(put);
str = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8);

マルチバイトを考慮しなければ、StringEntityにjsonなりを直接セットしておけなんだけど、エンコードする場合は、UrlEncodedFormEntityを使うってサラッと書いてる場合が多かった。
それだとjsonじゃなくなるんだよね。。(これも結局jsonのリクエストではないけどw
サーバ側が変えられない中で四苦八苦した結果、これでOKが返って来たので良いこととするー

参考

10
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
14