2013-04-25 108 views
3

我試圖從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

回答

1

產生java.io.IOException

的信號是某種類型的I/O異常已經發生。該類是 由失敗或中斷的I/O 操作產生的一般異常類別。

Web服務器遇到意外情況,阻止它履行客戶端訪問請求的URL的請求。

服務器端可能有問題,但服務器無法針對其響應中的錯誤情況更加具體。

因此它將它作爲錯誤代碼500返回,這意味着服務器端出現錯誤。收到此錯誤的

機會可能是

  1. 的輸入或需要傳遞的服務器端,並在你的代碼方面的方法是不同的值。
  2. 可能是你的輸入是正確的,但在某些時候,服務器無法處理他的最終輸出給您迴應500

怎樣纔可以解決?

您將不得不要求系統管理員在他的末端檢查錯誤日誌(如果在他們那邊使用了任何日誌)。如果錯誤被記錄,您將知道確切的原因。

相關問題