从Android错误调用asmx web服务:“java.io.IOException:HTTP请求失败,HTTP状态:500”

问题描述:

我试图从Android调用.asmx Web服务。在下面你可以看到我的代码。当我将它用于其他Web服务时它正在工作,但它不适用于我需要使用的服务。 问题是“java.io.IOException:HTTP请求失败,HTTP状态:500”异常。 首先我假设问题来自Web服务端。然而,当我试图达到使用Devexpress和.NET时,它是有效的。从Android错误调用asmx web服务:“java.io.IOException:HTTP请求失败,HTTP状态:500”

我试图从Devexpress得到同样的错误,当我删除“contentType:”application/json; charset = utf-8“,”行。

注意:Web服务定义没有错误。

私有类KullaniciServiceAsync扩展的AsyncTask {

protected void onPreExecute(){ 
     Toast.makeText(getApplicationContext(), "Kullanici Bilgileri Alınıyor...", Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    protected KullaniciBilgisiGetir doInBackground(String... Str) { 
     try { 
      //ArrayList<HeaderProperty> headerProperty = new ArrayList<HeaderProperty>(); 
      //headerProperty.add(new HeaderProperty("Content-Type", "application/json; charset=utf-8")); 
      k = new KullaniciBilgisiGetir();  
      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
      request.addProperty("UserId","1234567890"); 
      request.addProperty("Password",Pass); 
      request.addProperty("Kod",Kod); 
      request.addProperty("Sifre",Sifre); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(request); 
      Log.e("Request",request.toString()); 
      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
      androidHttpTransport.debug = true; 
      try{ 
       androidHttpTransport.call(SOAP_ACTION, envelope); 
       SoapObject response = (SoapObject) envelope.getResponse(); 
       if (response.hasProperty("KResult")) { 
        if (response.getPropertyAsString("KResult") == null) { 
         k.setKullaniciRespond(null); 
        } else { 
         k.setKullaniciRespond(response.getPropertyAsString("KResult")); 
        } 
       } 

      }catch(Exception e){ 
       Log.e("httpTRYCATCH", e.toString()); 
      } 
     } catch (Exception e) { 
      Log.e("ilkTRY",e.toString()); 
     }    
     return k; 
    } 

    protected void onPostExecute(KullaniciBilgisiGetir e){ 
     txt1.setText("ResponseText ->" + e.getKullaniciRespond()); 
     //txt2.setText("bu "+e.getResponse()); 
     //txt3.setText("Count "+count); 
    } 

} 
+0

此错误只能通过修复到Web服务器软件来解决。这不是客户端问题。 – 2013-04-25 08:08:04

+0

如何解决?我可以联系系统管理员。但我应该告诉他他需要做什么。 – user00001 2013-04-25 08:23:25

产生java.io.IOException

的信号是某种类型的I/O异常已经发生。该类是 由失败或中断的I/O 操作产生的一般异常类别。

Web服务器遇到意外情况,阻止它履行客户端访问请求的URL的请求。

服务器端可能有问题,但服务器无法针对其响应中的错误情况更加具体。

因此它将它作为错误代码500返回,这意味着服务器端出现错误。收到此错误的

机会可能是

  1. 的输入或需要传递的服务器端,并在你的代码方面的方法是不同的值。
  2. 可能是你的输入是正确的,但在某些时候,服务器无法处理他的最终输出给您回应500

怎样才可以解决?

您将不得不要求系统管理员在他的末端检查错误日志(如果在他们那边使用了任何日志)。如果错误被记录,您将知道确切的原因。

请检查属性名称是否与Web服务参数相同。例如

;

request.addProperty("UserId","1234567890"); 

您的参数名称UserId上的Web服务?

也可以按照本教程:Android Programlama – .Net Web Service Kullanımı