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

时间:2013-04-25 07:59:47

标签: android web-services asmx

我正在尝试从Android调用.asmx网络服务。您可以在下面看到我的代码。当我将它用于其他Web服务时,它正在工作,但它不能用于我需要使用的服务。 问题是“java.io.IOException:HTTP请求失败,HTTP状态:500”异常。 首先,我假设问题来自Web服务方面。但是,当我尝试使用Devexpress和.NET时,它可以正常工作。

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

注意: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);
    }

}

2 个答案:

答案 0 :(得分:1)

  

<强> java.io.IOException的

     

表示发生了某种I / O异常。这堂课是   由失败或中断的I / O产生的一般异常类   操作

Web服务器遇到意外情况,无法满足客户端访问请求的URL的请求。

服务器端可能出现问题,但服务器对其响应中的错误情况不能更具体。

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

出现此错误的可能性

  1. 需要在服务器端和代码端为方法传递的输入或值是不同的。
  2. 可能是你的输入是正确的,但在某些时候服务器未能在他的结束处理输出并给你回复500
  3. 如何解决?

    您必须要求系统管理员检查其末尾的错误日志(如果他们一方使用了任何日志)。如果记录错误,您将知道确切的原因。

答案 1 :(得分:0)

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

例如

;

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

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

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