在android中将json对象发送到HTTP服务器时导致错误请求异常

在android中将json对象发送到HTTP服务器时导致错误请求异常,android,json,android-asynctask,Android,Json,Android Asynctask,我正在尝试发送此HTTP服务器,但出现异常。这是我在asynctask中使用的代码,我觉得我错过了一些东西,这就是为什么它会出现异常,因为当我尝试我的请求时,我在fiddler中获得了成功。如果有人能发现这个错误,请帮助我。我们将非常感谢您的帮助 这是我的请求, {"CartItemEntity":[{"MainMenuCode":"CHBA","SubMenuCode":"AL","Quantity":1,"Price":1560}],"DiscountCode":"0","PayCode":

我正在尝试发送此HTTP服务器,但出现异常。这是我在asynctask中使用的代码,我觉得我错过了一些东西,这就是为什么它会出现异常,因为当我尝试我的请求时,我在fiddler中获得了成功。如果有人能发现这个错误,请帮助我。我们将非常感谢您的帮助

这是我的请求,

{"CartItemEntity":[{"MainMenuCode":"CHBA","SubMenuCode":"AL","Quantity":1,"Price":1560}],"DiscountCode":"0","PayCode":"0","OrderID":"6592","OutletCode":"AT","RequiredDate":"15/6/2015","Total":"1638.0","CardNo":"0","PhoneNo":1234}
这是asynctask类

public class GetAllDiscountsAsyncTask extends
        AsyncTask<JSONObject, Integer, JSONArray> {
    private OnTaskCompleted listener;
    private JSONArray responseJson = null;
    private Context contxt;

    public GetAllDiscountsAsyncTask(Context context, OnTaskCompleted listener) {

        // API = apiURL;
        this.contxt = context;
        this.listener = listener;
    }

    JSONObject jData;


    @Override
    protected JSONArray doInBackground(JSONObject... jData) {

        String parameterPass = jData.toString();
        Log.i("doInBackground", parameterPass);

        String path = null;
        String response = null;
        DefaultHttpClient httpClient = null;

        ResponseHandler<String> responseHandler = null;

        try {
            path = "xxxxxxxxxxxxxxxxxxxxxxx";

            new URL(path);
        } catch (MalformedURLException e) {

            e.printStackTrace();
        }

        try {

            httpClient = new DefaultHttpClient();

            HttpPost httppost = new HttpPost(path);
            httppost.setEntity(new StringEntity(jData.toString(), "UTF-8"));
            httppost.setHeader("Content-type", "application/json");

            responseHandler = new BasicResponseHandler();
            response = httpClient.execute(httppost, responseHandler);

            responseJson = new JSONArray(response);
            System.out.println("*****JARRAY*****" + responseJson.length());

        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
        try {
            responseJson = new JSONArray(response);

        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        return responseJson;

    }

    @Override
    protected void onPostExecute(JSONArray result) {

        super.onPostExecute(result);

        listener.onTaskCompleted(responseJson);
    }

}
公共类GetAllDiscountsAsyncTask扩展
异步任务{
私有OnTaskCompleted侦听器;
私有JSONArray responseJson=null;
私人语境;
公共GetAllDiscountsAsyncTask(上下文,OnTaskCompleted侦听器){
//API=apirl;
this.contxt=上下文;
this.listener=listener;
}
JSONObject jData;
@凌驾
受保护的JSONArray doInBackground(JSONObject…jData){
字符串参数pass=jData.toString();
Log.i(“doInBackground”,参数传递);
字符串路径=null;
字符串响应=null;
DefaultHttpClient httpClient=null;
ResponseHandler ResponseHandler=null;
试一试{
path=“xxxxxxxxxxxxxxxx”;
新URL(路径);
}捕获(格式错误){
e、 printStackTrace();
}
试一试{
httpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(路径);
httppost.setEntity(新的StringEntity(jData.toString(),“UTF-8”);
setHeader(“内容类型”、“应用程序/json”);
responseHandler=新的BasicResponseHandler();
response=httpClient.execute(httppost,responseHandler);
responseJson=新的JSONArray(响应);
System.out.println(“****JARRAY*****”+responseJson.length());
}捕获(例外e){
Log.e(“缓冲区错误”,“错误转换结果”+e.toString());
}
试一试{
responseJson=新的JSONArray(响应);
}捕获(JSONException e){
Log.e(“JSON解析器”,“错误解析数据”+e.toString());
}
返回响应;
}
@凌驾
受保护的void onPostExecute(JSONArray结果){
super.onPostExecute(结果);
onTaskCompleted(responseJson);
}
}
这是我得到的一个例外


您必须将响应转换为字符串,然后从中生成JSON对象

您确定它是JSONArray而不是JSONObject吗?@Sachin Gadagi我已通过添加请求更新了我的问题,这是一个json对象,对吗?我想你应该看到fiddler发出请求时发送的确切请求,看看java端的一切是否都是一样的。这是一样的,我从java代码的系统中获取数据放入fiddler,我得到的是加法[]括号。([在开头和]在结尾),如何删除该行中response的方括号值为null,response=httpClient.execute(httppost,responseHandler);