2 つの整数パラメーターを渡す必要がある Json ポスト サービスがあります。
obj.put("id", par);
obj.put("type", par2);
params を渡すと、Fiddler2 を使用して、サービスがこれを返すことがわかります。
{"GetImageResult":[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,218,0,0,1,176,8,6,0,0,0,14,139,164,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,2,14,80,73......]}
しかし、この byteArray を asyncTask に入れることができません。を取得しようとしましたが、object.getJSONArray
うまくいきません... アイデアはありますか?? 前もって感謝します!object.getJSONObject
object.getString
@Override
public byte[] doInBackground(Object... params) {
obj = new JSONObject();
buffer = new byte[0];
inputStream = null;
hc = new DefaultHttpClient();
String message = null;
HttpPost p = new HttpPost(
"http://10.0.41.39/EVT.DataService.WCF/ServiceSyncJSON.svc/rest/GetImage");
try {
int par = (Integer) params[0];
int par2 = (Integer) params[1];
obj.put("id", par);
obj.put("type", par2);
} catch (Exception ex) {
ex.printStackTrace();
}
try {
message = obj.toString();
p.setEntity(new StringEntity(message, "UTF8"));
p.setHeader("Content-type", "application/json");
resp = hc.execute(p);
entity = resp.getEntity();
inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream, "UTF-8"), 8);
sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
JSONTokener tokener;
tokener = new JSONTokener(sb.toString());
obj = new JSONObject(tokener);
String str = obj.getString("GetImageResult");
Gson gson = new Gson();
byte[] parsed = gson.fromJson(str, byte[].class);
for (byte b : parsed) {
System.out.println(b);
}
} catch (Exception e) {
e.printStackTrace();
}
return buffer;
}