2016-03-22 13 views
0

Hallo ich bin neu in Android-Entwicklung Ich weiß nicht, wie man JSON verwendet. Ich habe versucht, ein existierendes, um mein eigenes zu machen, aber während ich versuchte, hatte ich Fehler und nicht in der Lage, die Daten zum Server unter Verwendung des JSON Formats zu senden. kann jemand mir helfen, dieses Problem zu lösen oder mich mit dem Arbeitscode vorzuschlagen.JSON Datenfehler beim Analysieren von Daten

Das ist meine predictionpage.java (Haupttätigkeit) Seite

public class PredictionActivity extends Activity { 

private String URL_NEW_PREDICTION = "http://127.0.0.1/new_predict.php"; 
private Button btnAddPrediction; 

String numOfGoal = "1"; 
String numOfCard = "1"; 
String diffOfPos = "1"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_prediction); 

    RadioGroup goal = (RadioGroup) findViewById(R.id.answer1); 

    goal.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // TODO Auto-generated method stub 

      switch (checkedId) { 
       case R.id.answer1A: 
        numOfGoal = "1"; 
        break; 
       case R.id.answer1B: 
        numOfGoal = "2"; 
        break; 
       case R.id.answer1C: 
        numOfGoal = "3"; 
        break; 

      } 

     } 
    }); 

    RadioGroup card = (RadioGroup) findViewById(R.id.answer2); 

    card.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // TODO Auto-generated method stub 

      switch (checkedId) { 
       case R.id.answer2A: 
        numOfCard = "1"; 
        break; 
       case R.id.answer2B: 
        numOfCard = "2"; 
        break; 
       case R.id.answer2C: 
        numOfCard = "3"; 
        break; 

      } 
     } 
    }); 

    RadioGroup pos = (RadioGroup) findViewById(R.id.answer3); 

    pos.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // TODO Auto-generated method stub 
      switch (checkedId) { 
       case R.id.answer3A: 
        diffOfPos = "1"; 
        break; 
       case R.id.answer3B: 
        diffOfPos = "2"; 
        break; 
       case R.id.answer3C: 
        diffOfPos = "3"; 
        break; 

      } 

     } 
    }); 

    btnAddPrediction = (Button) findViewById(R.id.submit); 

    btnAddPrediction.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      new AddNewPrediction().execute(numOfGoal, numOfCard, diffOfPos); 
     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_prediction, menu); 
    return true; 
} 

private class AddNewPrediction extends AsyncTask<String, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

    } 

    @Override 
    protected Void doInBackground(String... arg) { 
     // TODO Auto-generated method stub 
     String goalNo = arg[0]; 
     String cardNo = arg[1]; 
     String posDiff = arg[2]; 

     // Preparing post params 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("goalNo", goalNo)); 
     params.add(new BasicNameValuePair("cardNo", cardNo)); 
     params.add(new BasicNameValuePair("posDiff", posDiff)); 

     ServiceHandler serviceClient = new ServiceHandler(); 

     String json = serviceClient.makeServiceCall(URL_NEW_PREDICTION, 
       ServiceHandler.POST, params); 

     Log.d("Create Prediction Request: ", "> " + json); 


     if (json != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(json); 
       boolean error = jsonObj.getBoolean("error"); 
       // checking for error node in json 
       if (!error) { 
        // new category created successfully 
        Log.e("Prediction added successfully ", 
          "> " + jsonObj.getString("message")); 
       } else { 
        Log.e("Add Prediction Error: ", 
          "> " + jsonObj.getString("message")); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      Log.e("JSON Data", "JSON data error!"); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
    } 
} 
} 

Das ist meine ServiceHandler.java Seite ist

public class ServiceHandler { 

static InputStream is = null; 
static String response = null; 
public final static int GET = 1; 
public final static int POST = 2; 

public ServiceHandler() { 

} 

public String makeServiceCall(String url, int method) { 
    return this.makeServiceCall(url, method, null); 
} 


public String makeServiceCall(String url, int method, 
           List<NameValuePair> params) { 
    try { 

     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpEntity httpEntity = null; 
     HttpResponse httpResponse = null; 


     if (method == POST) { 
      HttpPost httpPost = new HttpPost(url); 

      if (params != null) { 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 
      } 

      httpResponse = httpClient.execute(httpPost); 

     } else if (method == GET) { 

      if (params != null) { 
       String paramString = URLEncodedUtils 
         .format(params, "utf-8"); 
       url += "?" + paramString; 
      } 
      HttpGet httpGet = new HttpGet(url); 

      httpResponse = httpClient.execute(httpGet); 

     } 
     httpEntity = httpResponse.getEntity(); 
     is = httpEntity.getContent(); 

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "UTF-8"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     response = sb.toString(); 
    } catch (Exception e) { 
     Log.e("Buffer Error", "Error: " + e.toString()); 
    } 

    return response; 
} 
} 

Dies ist meine PHP-Server-Seite:

<?php 

$fp=fopen('filename.php','wb'); 
fwrite($fp, "data to be written"); 
fclose($fp); 
if($fp) 
    echo 'checkout'; 
else 
    echo 'nothing'; 
exit; 

include_once './DbConnect.php';//This page include db connection file 


function createNewPrediction() { 
    $response = array(); 
    $goalNum = $_POST["goalNo"]; 
    $cardNum = $_POST["cardNo"]; 
    $posDiff = $_POST["posDiff"]; 
      $db = new DbConnect(); 
    // mysql query 
    $query = "INSERT INTO prediction(goalNum,cardNum,posDiff) VALUES('$goalNum','$cardNum','$posDiff')"; 
    $result = mysql_query($query) or die(mysql_error().'hello'); 
    if ($result) { 
     $response["error"] = false; 
     $response["message"] = "Prediction added successfully!"; 
     echo'succes'; 
    } else { 
     $response["error"] = true; 
     $response["message"] = "Failed to add prediction!"; 
    } 
    // echo json response 
echo json_encode($response); 
} 
createNewPrediction(); 
?> 

das ist mein Logcat Fehlerantwort:

03-22 22:59:11.239 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err: org.apache.http.conn.HttpHostConnectException: Connection to http://127.0.0.1 refused 
03-22 22:59:11.239 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:193) 
03-22 22:59:11.239 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169) 
03-22 22:59:11.240 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124) 
03-22 22:59:11.240 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366) 
03-22 22:59:11.240 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560) 
03-22 22:59:11.240 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492) 
03-22 22:59:11.240 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470) 
03-22 22:59:11.276 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at com.example.muralivss.tjson2_predictionactivity.ServiceHandler.makeServiceCall(ServiceHandler.java:56) 
03-22 22:59:11.277 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at com.example.muralivss.tjson2_predictionactivity.PredictionActivity$AddNewPrediction.doInBackground(PredictionActivity.java:143) 
03-22 22:59:11.277 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at com.example.muralivss.tjson2_predictionactivity.PredictionActivity$AddNewPrediction.doInBackground(PredictionActivity.java:120) 
03-22 22:59:11.278 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:295) 
03-22 22:59:11.278 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
03-22 22:59:11.603 3194-3200/com.example.muralivss.tjson2_predictionactivity W/art: Suspending all threads took: 39.124ms 
03-22 22:59:12.196 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
03-22 22:59:12.197 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
03-22 22:59:12.197 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
03-22 22:59:12.197 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at java.lang.Thread.run(Thread.java:818) 
03-22 22:59:12.197 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err: Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused) 
03-22 22:59:12.197 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at libcore.io.IoBridge.connect(IoBridge.java:124) 
03-22 22:59:12.197 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 
03-22 22:59:12.198 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452) 
03-22 22:59:12.198 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at java.net.Socket.connect(Socket.java:884) 
03-22 22:59:12.198 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:124) 
03-22 22:59:12.198 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:149) 
03-22 22:59:12.198 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err: ... 15 more 
03-22 22:59:12.198 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err: Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused) 
03-22 22:59:12.199 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at libcore.io.Posix.connect(Native Method) 
03-22 22:59:12.199 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) 
03-22 22:59:12.199 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at libcore.io.IoBridge.connectErrno(IoBridge.java:137) 
03-22 22:59:12.199 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err:  at libcore.io.IoBridge.connect(IoBridge.java:122) 
03-22 22:59:12.199 3194-3270/com.example.muralivss.tjson2_predictionactivity W/System.err: ... 20 more 
03-22 22:59:12.199 3194-3270/com.example.muralivss.tjson2_predictionactivity E/Buffer Error: Error: java.lang.NullPointerException: lock == null 
03-22 22:59:12.200 3194-3270/com.example.muralivss.tjson2_predictionactivity D/Create Prediction Request:: > null 
03-22 22:59:12.205 3194-3270/com.example.muralivss.tjson2_predictionactivity E/JSON Data: JSON data error! 
03-22 22:59:31.554 3194-3200/com.example.muralivss.tjson2_predictionactivity W/art: Suspending all threads took: 14.009ms 

Alle bereitgestellten Lösungen werden dankbar sein.

+0

können Sie Ihre Json Antwort und logcat Datei teilen –

+0

können Sie den Status-Code aus dem HTTP-Client drucken – cafebabe1991

+0

Leider ich neu war, um diese so i dnt knw, wie man Statuscode des HTTP-Klienten – Murali

Antwort

0

Versuchen Sie BufferedReader Instanz nach Gebrauch zu schließen: reader.close()

Abgesehen, dass es in Ordnung aussieht. Versuchen Sie außerdem, Zeile für Zeile die Breakpoints zu debuggen, um genau zu sehen, woher der Fehler stammt.

0
  1. HttpClient ist jetzt veraltet. Überprüfen Sie hier für Updates http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html

  2. Überprüfen Sie mit dem folgenden Link für die Handhabung von httpurlconnection, Json in Android. http://developer.android.com/reference/java/net/HttpURLConnection.html http://developer.android.com/reference/android/util/JsonReader.html

  3. Beispielcode für json Anfrage in HttpURLConnection android http://danielnugent.blogspot.in/2015/06/updated-jsonparser-with.html

  4. für PHP Umgang

    $ recValue = file_get_contents Wert Empfangen ('php: // input'); $ json = json_decode ($ recValue); $ valueOne = $ json ["keyOne"];

für mehr Referenzprüfung dieses

http://php.net/manual/en/function.json-decode.php

Verwandte Themen