0

我不知道我是否以正确的方式使用 POST 以 JSON 格式发送数据。我想在 JSONObject“ReportCode”上发送一个数据。到目前为止我得到了这个?请告诉我我的代码有什么问题以及我需要做什么才能以 JSON 格式传递数据。谢谢。

public class DoPost extends AsyncTask<String, Void, Boolean>
{
Exception exception = null;
private ProgressDialog progressDialog;
Context mContext = null;
BufferedReader in;
InputStream is;

public DoPost(Context context) {

    mContext = context;

}

protected void onPreExecute() 
{     
    progressDialog = new ProgressDialog(mContext);
    progressDialog.setMessage("Validating....");
    progressDialog.show();              
    progressDialog.setCancelable(false);
}

@Override
protected Boolean doInBackground(String... arg0) 
{
    JSONObject jObject = new JSONObject();
    try{
        jObject.put("ReportCode","13-T001");

        List<NameValuePair> pairs = new ArrayList<NameValuePair>();
        pairs.add(new BasicNameValuePair("ReportData", jObject.toString()));

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://phsjulchs4.tias.com.ph:1217/api/report");
        httpPost.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8"));
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();


    }catch (Exception e){
    Log.e("ClientServerDemo", "Error:", e);
    exception = e;
    //Toast.makeText(getApplicationContext(), e.getMessage().toString(), 5).show();
    }

return true;    

}

@Override
protected void onPostExecute(Boolean valid)
{
    progressDialog.dismiss();   
    //Update the UI
    if(exception != null){

        Toast.makeText(mContext, "Sent", 6).show();
    }else{
    //  mContext.startActivity(new Intent(mContext, S_2nd_Main.class));

    }
}

}
4

1 回答 1

0

如果您在.execute函数上看到所有有效参数的选项DefaultHttpClient,那么它们中没有一个只有一个HttpPost对象作为输入参数。这就是您遇到错误的原因。尝试使输入参数正确。希望能帮助你理解问题。

于 2013-07-31T06:12:25.000 回答