将json对象发送到android中的HTTP服务器

时间:2011-06-15 14:15:48

标签: android json

我使用以下代码将HTTP对象发送到HTTP服务器。

最重要的是我还必须发送布尔值。

public void getServerData() throws JSONException, ClientProtocolException, IOException {

    ArrayList<String> stringData = new ArrayList<String>();
    DefaultHttpClient httpClient = new DefaultHttpClient();
    ResponseHandler <String> resonseHandler = new BasicResponseHandler();
    HttpPost postMethod = new HttpPost("http://consulting.for-the.biz/TicketMasterDev/TicketService.svc/SaveCustomer");

    JSONObject json = new JSONObject();
    json.put("AlertEmail",true);
    json.put("APIKey","abc123456789");
    json.put("Id",0);
    json.put("Phone",number.getText().toString());
    json.put("Name",name.getText().toString());
    json.put("Email",email.getText().toString());
    json.put("AlertPhone",false);      
    postMethod.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
    String response = httpClient.execute(postMethod,resonseHandler);
    Log.e("response :", response);
    }

但它在行

中显示异常
String response = httpClient.execute(postMethod,resonseHandler);

as

org.apache.http.client.HttpResponseException: Bad Request

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:13)

错误请求是服务器,说它不喜欢POST中的内容。

我能看到的唯一明显的问题是你没有告诉服务器你发送的是JSON,所以你可能需要设置一个Content-Type标头来指示正文是application/json

postMethod.setHeader( "Content-Type", "application/json" );

如果这不起作用,您可能需要查看服务器日志以查看它不喜欢您的POST的原因。

如果您无法直接访问服务器日志,则需要与服务器的所有者联系以尝试调试内容。可能是您的JSON格式略有错误,缺少必填字段或其他类似问题。

如果您无法访问服务器的所有者,您可以尝试使用数据包嗅探器(如WireShark)从您的应用程序和成功的POST中捕获数据包,并将两者进行比较以尝试并找出不同的东西。这可能有点像在大海捞针,特别是对于大型尸体。

如果你不能得到一个成功的POST的例子,那么你已经很好了,因为你没有参考点。

答案 1 :(得分:1)

这可能是非技术性的,但是 字符串响应= httpClient.execute(postMethod, - &gt; resonseHandler); 这里变量名有拼写错误,请使用responseHandler(上面定义)