android中的application / soap + msbin1

时间:2011-10-11 09:56:28

标签: android json web-services soap

我只需要通过正常的HTTP POST向webservice发送请求以获得响应。我在身体上传递了必需的参数。我运行它。我得到“无法处理消息,因为内容类型'text / json'不是预期的类型'application / soap + msbin1'。“错误。当我对此进行研究时,由于“Web服务要求具有特定内容类型的请求,即”application / soap + msbin1“。当我替换预期的内容类型时,我收到错误请求错误.I不知道怎么从中恢复过来。

我的代码: ...

    DefaultHttpClient httpClient = new DefaultHttpClient();
    ResponseHandler <String> resonseHandler = new BasicResponseHandler();
    HttpPost postMethod = new HttpPost("My URL");
    postMethod.setHeader( "Content-Type", "text/json"); 
    postMethod.setHeader( "Cache-Control", "no-cache"); 



    JSONObject json = new JSONObject();
    json.put("userName", "My Username");
    json.put("password", "My Password");
    json.put("isPersistent",false);


    postMethod.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
    HttpResponse  response = httpClient.execute(postMethod);

...

2 个答案:

答案 0 :(得分:0)

看起来您正在尝试调用WCF SOAP服务。该服务期望正确的SOAP通信(=无JSON),而且它使用SOAP消息的MS二进制消息编码(即内容类型描述的内容)不可互操作,因此我怀疑您将能够在Android设备上使用它(除非您发现为Java / Android实现该编码。)

答案 1 :(得分:0)

HttpPost request = new HttpPost(url);    
StringEntity entity = new StringEntity(json.toString());
                             entity.setContentType("application/json;charset=UTF-8");                            entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
                             request.setHeader("Accept", "application/json");
                             request.setEntity(entity); 

try{
DefaultHttpClient httpClient = new DefaultHttpClient();
    response = httpClient.execute(request); 
}

尝试使用类似的东西。它对我有用。

感谢。 N_JOY。