初めての Android アプリを作成していますが、ローカル Web サーバーから JSON 形式のデータを取得する必要があります。Web サーバーは稼働しており、Android アプリのデバッグ中に返されたデータを確認できます。ただし、データを JSON 配列に解析しようとすると、コードの最後の行で NullPointerException が発生し続けます。
呼び出し:
JSONParserTask jParser = new JSONParserTask();
ArrayList> ResultsList = new ArrayList>();
EditText etSoNo = (EditText) findViewById(R.id.txtSoNo);
//String url = "http://xxx.xxx.xxx.xxx/api/SOLocLookup/" + etSoNo.getText();
String url = "http://headers.jsontest.com/";
try{
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpGet httpget = new HttpGet(url);
httpget.setHeader("Content-type", "application/json");
httpget.setHeader("Accept", "JSON");
InputStream inputStream = null;
String result = null;
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
JSONArray jArray = new JSONArray(result);
最初は、API が JSON 形式の応答を送信していないのではないかと考えたので、呼び出しをテスト JSON サービスに変更したことがわかります: http://headers.jsontest.com/
戻りデータ:
{ "Accept-Language": "en-US,en;q=0.8", "Host": "headers.jsontest.com", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/ 537.36 (KHTML、Gecko など) Chrome/29.0.1547.76 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8" }
私のLogCat:
09-26 18:08:30.977 61-214/system_process I/ActivityManager: 開始: 意図 { cmp=com.evs.sodscamera/.activity.SoMatlLookup.SoMatlLookup } pid 1034 から 09-26 18:08:31.997 61-99 /system_process I/ActivityManager: 表示された com.evs.sodscamera/.activity.SoMatlLookup.SoMatlLookup: +913ms 09-26 18:09:11.748 1034-1034/com.evs.sodscamera D/dalvikvm: exceptObj=0x40589210 で返される JDWP 呼び出し(Ljava/lang/NullPointerException;)
私は本当に途方に暮れています。とても単純なことだと思いますが、経験が浅いので見つけることができません。
ありがとう!!
-グレッグ
更新 1:
JSONArray を JSONObject に変更すると、テスト Web サイトから返されたデータに対して機能します。しかし、元のデータを取得しようとすると、実際には配列として格納されています。悪いテストデータを使用して投稿していないことを以前に認識すべきでした。謝罪いたします。
新しい返品データ:
[{"SoNo":119152.0,"SoLn":1.00,"ItemID":"7075SHA6016","ItemDesc":"7075-T6 ALCLAD SHEET .016\"","Size1":48.00000,"Size2":144.00000, "TagNo":62336.0,"PCS":1.0,"Loc":"G0303"},{"SoNo":119152.0,"SoLn":1.00,"ItemID":"7075SHA6016","ItemDesc":"7075-T6 ALCLAD SHEET .016\"","Size1":48.00000,"Size2":144.00000,"TagNo":67931.0,"PCS":124.0,"Loc":"G0303"},{"SoNo":119152.0,"SoLn ":1.00,"ItemID":"7075SHA6016","ItemDesc":"7075-T6 ALCLAD SHEET .016\"","Size1":48.00000,"Size2":48.00000,"TagNo":68912.0,"個": 1.0,"Loc":"REM75"},{"SoNo":119152.0,"SoLn":1.00,"ItemID":"7075SHA6016","ItemDesc":"7075-T6 ALCLAD SHEET .016\"","Size1 ":48.00000,"Size2":144.00000,"TagNo":69589.0,"個":177.0,"Loc":"RECVG"},{"SoNo":119152.0,"SoLn":1.00,"ItemID":"7075SHA6016 ","ItemDesc":"7075-T6 ALCLAD SHEET .016\"","Size1":48.00000,"Size2":48.00000,"TagNo":76493.0,"個":1.0,"場所":"REM75"} ,{"SoNo":119152.0,"SoLn":2.00,"ItemID":"2024SHA3125M","ItemDesc":"2024-T3 ALCLAD SHEET .125\" MRS","Size1":48.00000,"Size2":144.00000 、"TagNo":72070.0,"PCS":12.0,"Loc":"H0108"},{"SoNo":119152.0,"SoLn":3.00,"ItemID":"177SH-016","ItemDesc":"T17 /7 シート .016\"
AMS-5528","Size1":36.00000,"Size2":120.00000,"TagNo":70031.0,"PCS":1.0,"Loc":"S0504"},{"SoNo":119152.0,"SoLn":3.00 ,"ItemID":"177SH-016","ItemDesc":"T17/7 SHEET .016\"","Size1":36.00000,"Size2":120.00000,"TagNo":76108.0,"個":10.0, "場所":""}]
ありがとう!!