2016-07-27 23 views
0

私の基本的なAndroid-Webサーバーコードを見てください。 データウェブサーバに送信されるべきであるAndroidのスマートフォンから、ウェブサーバは、データベース内のデータを配置し、クエリを与える必要がなければならない: {「query_result」:「成功」}WebサーバーからAndroidへJSON解析データ

(iはブラウザを介してサーバー側のスクリプトにアクセスします

問題は、私のアプリがJSON応答を正しく解析しなかったり、何の応答も得られないということですか?

これまでの私のコード: http://bits.works/view/466210bb

コードは、Androidの画面の "エラー解析するJSONデータを" 示しています。この方法で

Call of method: 

//Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 

new SignupActivity(AndroidGPSTrackingActivity.this).execute(Double.toString(latitude), Double.toString(latitude), Double.toString(longitude), Double.toString(longitude), Double.toString(latitude)); 

クラス:

public class SignupActivity extends AsyncTask<String, Void, String> { 

private Context context; 

public SignupActivity(Context context) { 
    this.context = context; 
} 

protected void onPreExecute() { 

} 

@Override 
protected String doInBackground(String... arg0) { 
    String fullName = arg0[0]; 
    String userName = arg0[1]; 
    String passWord = arg0[2]; 
    String phoneNumber = arg0[3]; 
    String emailAddress = arg0[4]; 

    String link; 
    String data; 
    BufferedReader bufferedReader; 
    String result; 

    try { 
     data = "?fullname=" + URLEncoder.encode(fullName, "UTF-8"); 
     data += "&username=" + URLEncoder.encode(userName, "UTF-8"); 
     data += "&password=" + URLEncoder.encode(passWord, "UTF-8"); 
     data += "&phonenumber=" + URLEncoder.encode(phoneNumber, "UTF-8"); 
     data += "&emailaddress=" + URLEncoder.encode(emailAddress, "UTF-8"); 

     link = "http://qqqqqtech/signup.php" + data; 
     URL url = new URL(link); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

     bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); 
     result = bufferedReader.readLine(); 
     return result; 
    } catch (Exception e) { 
     return new String("Exception: " + e.getMessage()); 
    } 
} 

@Override 
protected void onPostExecute(String result) { 
    String jsonStr = result; 
    if (jsonStr != null) { 
     try { 
      JSONObject jsonObj = new JSONObject(jsonStr); 
      String query_result = jsonObj.getString("query_result"); 

      if (query_result.equals("SUCCESS")) { 
       Toast.makeText(context, "Data inserted.", Toast.LENGTH_SHORT).show(); 
      } else if (query_result.equals("FAILURE")) { 
       Toast.makeText(context, "Data could not be inserted.", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(context, "Couldn't connect to remote database.", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Toast.makeText(context, "Error parsing JSON data.", Toast.LENGTH_SHORT).show(); 
     } 
    } else { 
     Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show(); 
    } 
} 

}

+0

ここにコードを掲載する必要があります。 –

答えて

0

doInBackgroundが例外をキャッチして戻ってきた可能性があるためです

String query_result = jsonObj.getString("query_result"); 

行の前にdoInBackgroundから返された値をチェックしてくださいそれは有効な応答の代わりに。したがって、内容を確認する前にToastjsonStrにして解析してください。

+0

protected void onPostExecute(文字列の結果){ 文字列jsonStr =結果; Toast.makeText(context、jsonStr、Toast.LENGTH_SHORT).show(); if(jsonStr!= null){... jsonStrが空であるようです。 – AndreasK

関連する問題