Android以JSON格式向服务器发送字符串

时间:2014-09-07 14:38:52

标签: java android json

我写了一个方法将一些数据发送到服务器并接收一个整数值:

private void sendOrder(Order order,String cid) {
    InputStream inputStream = null;
    String result = "";
    int statusCode = 0;
    try {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(send_url);
        JSONArray jsonArray = new JSONArray();
        for (OrderDetails detail : order.getOrders()) {
            JSONObject jsonObject = new JSONObject();

            jsonObject.accumulate("c_id", cid);
            jsonObject.accumulate("r_id", String.valueOf(detail.getR_id()));
            jsonObject.accumulate("f_id", String.valueOf(detail.getF_id()));
            jsonObject.accumulate("count",
                    String.valueOf(detail.getCount()));
            jsonArray.put(jsonObject);
        }

        String json = jsonArray.toString();
        StringEntity se = new StringEntity(json);
        httpPost.setEntity(se);
        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-type", "application/json");
        HttpResponse httpResponse = httpclient.execute(httpPost);
        statusCode = httpResponse.getStatusLine().getStatusCode();

        inputStream = httpResponse.getEntity().getContent();

        if (inputStream != null)
            result = Util.convertInputStreamToString(inputStream);
        else
            result = "0";

    } catch (Exception e) {
        Log.d("send order", e.toString());
    }
    Log.d("order result", result);
    return Integer.parseInt(result);

}

cid是存储在字符串中的数字,如:“30111”
但是在服务器中接收c_id时出现问题。它在服务器中的值就像:“c_id”:“\”30111 \“”
我希望c_id在服务器中与在客户端中一样 我怎么能解决这个问题?
UPDATE
这是我在android日志中的json字符串:

[{"count":"1","r_id":"8","f_id":"10033","c_id":"\"30111\""},{"count":"2","r_id":"8","f_id":"10034","c_id":"\"30111\""}]

1 个答案:

答案 0 :(得分:0)

这是我的代码,工作得非常好 上课 -

public class AddQuery extends AsyncTask<Void, Void, Void> {

private Context context;
private ProgressDialog pd;
private String url;
private String jsonResult;
private String qrs;
private String cId;

public AddQuery(Context context, String qrs, String cid) {
    // TODO Auto-generated constructor stub
    this.context = context;
    this.qrs = qrs;
    this.cId = cid;
    url = "http://" + context.getResources().getString(R.string.url)
            + "/ques.php";
    pd = new ProgressDialog(context);
    pd.setIndeterminate(true);
    pd.setMessage("Retrieving Data..");
    pd.setCancelable(false);
}

@Override
protected Void doInBackground(Void... arg0) {
    SharedPreferences prefs = context.getSharedPreferences("com.multisoft",
            Context.MODE_PRIVATE);
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("go", "add"));
    params.add(new BasicNameValuePair("qrs", qrs));
    params.add(new BasicNameValuePair("cid", cId));
    params.add(new BasicNameValuePair("uid", prefs.getString("userID", "0")));
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);
    try {
        httppost.setEntity(new UrlEncodedFormEntity(params));
        HttpResponse response = httpclient.execute(httppost);
        jsonResult = inputStreamToString(response.getEntity().getContent())
                .toString();
    }

    catch (ClientProtocolException e) {
        Log.e("e", "error1");
        e.printStackTrace();
    } catch (IOException e) {
        Log.e("e", "error2");
        e.printStackTrace();
    }
    return null;
}

private StringBuilder inputStreamToString(InputStream is) {
    String rLine = "";
    StringBuilder answer = new StringBuilder();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));

    try {
        while ((rLine = rd.readLine()) != null) {
            answer.append(rLine);
        }
    }

    catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(context, "Error..." + e.toString(),
                Toast.LENGTH_LONG).show();
    }
    return answer;
}

@Override
protected void onPostExecute(Void result) {
pd.dismiss();

JSONObject jsonResponse;
jsonResponse = new JSONObject(jsonResult);
//do what you want to do here from text apeared from your php and stored in jsonResult
String c_id = jsonResponse.optString("c_id");
}

在您的主要活动中执行上述课程,如this-

new AddQuery(MyActivity.this, "4","23").execute();