2017-12-08 14 views
0

これは...フラグメントからSyncHttpClientを使用してリクエストを送信するにはどうすればよいですか?

final SyncHttpClient client = new SyncHttpClient(); 

    RequestParams params = new RequestParams(); 
    params.put("product[name]", name); 
    params.put("product[price]", price); 

    client.post(context,Config.URL_GET_ALL_PRODUCT, params, new AsyncHttpResponseHandler() { 
     @Override 
     public void onStart() { 

      super.onStart(); 
      setUseSynchronousMode(true); 
     } 
     @Override 
     public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { 
      String result = new String(responseBody); 
      try { 
       JSONObject eventResult = new JSONObject(result); 

       String id = eventResult.getString("id"); 
       // Check for error node in json 
       if (id != null || id != "") { 
        Toast.makeText(context, 
          "New Product Added", Toast.LENGTH_LONG).show(); 
       } else { 
        // Error in login. Get the error message 
        String errorMsg = eventResult.getString("error_msg"); 
        Toast.makeText(context, 
          errorMsg, Toast.LENGTH_LONG).show(); 
       } 


      } catch (JSONException e) { 
       e.printStackTrace(); 
       System.out.println(e.getMessage()); 
      } 
     } 
     @Override 
     public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { 
      System.out.println(error.getMessage()); 
     } 
    }); 
} 

サーバに要求する私のコードであり、これは、このコードのエラー

未処理の例外原点原因フラグメント

ProductController.addProduct(getContext().getApplicationContext(), nameProduct, priceProduct); 

のメソッドを呼び出すために私のコードです android.os.NetworkOnMainThreadException at com.project.roy.interview.Control.ProductController.addProduct(ProductController.java:102) at com.project.roy .interview.Fragment.FragmentAddProduct $ 1.onClick(このライブラリのドキュメントでFragmentAddProduct.java:38

答えて

0

その書かれた:

プロセスのHTTP同期モードで要求し、あなたの呼び出し元スレッド は、上ブロックされますので、各リクエスト

Androidでは、あなたの例外が発生するメインスレッドをブロックすることはできません。

AsyncTaskを使用するか、このコードを別のスレッド内で実行します。

+0

このコードを別のスレッド内で実行するにはどうすればよいですか? – roihan