2010-06-15 58 views
3

我已經看到了討論這個主題,但似乎沒有人發佈解決方案。目前,我正在測試傳遞參數給我的.Net Web服務。當參數到達Web服務時,它會添加一個附加字符串,然後將其返回給我的應用程序;但我要返回的是字符串消息,而不是我傳遞的參數。我的web服務或soap方法有問題嗎?Web服務從應用程序使用kso​​ap方法接收空參數

皁:

SoapObject請求=新SoapObject(NAMESPACE,METHOD_NAME);

request.addProperty("A", "workowr"); 


    SoapSerializationEnvelope envelope = 
     new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);  
     try { 
      androidHttpTransport.call(SOAP_ACTION, envelope); 
      SoapPrimitive result = (SoapPrimitive) envelope.getResponse(); 
      //SoapObject result = (SoapObject)envelope.getResponse();  
      String resultData = result.toString(); 
      testTV.setText(resultData); 

     } 
     catch(Exception e) 
     { 
      testTV.setText(e.getMessage()); 
     } 

這裏是我的簡單的.NET Web服務:

公共功能getRegInfo(一BYVAL作爲字符串)作爲字符串

迴歸A + 「​​字符串消息」

End Function

我將不勝感激任何幫助。

+0

你曾經能夠解決這個問題嗎?我有與Android和ksoap2 – bugzy 2010-06-22 12:17:11

回答

5

我的工作是改變我的.net web服務和我的應用程序中的命名空間URL。

例如,我有:

http://www.example.com/webservices/

我改爲:

「example.com/webservices/」

它完美地工作。

給它一個鏡頭。

1

是的 - 在通過KSoap進行連接時,似乎在web服務名稱空間中冒號(:)時出現了一些問題。定期的非參數調用可以正常工作,但由於某些原因,參數似乎經歷爲空。

1

實際上沒有必要在最後加上額外的「/」。

在調試並嘗試了網上寫的任何東西之後,我發現傳遞參數時最重要的是在WebService聲明和ksoap2中使用相同的語句。

因此,在兩個地方使用「/」或從兩個地方刪除它。 「http://」也是可以使用的。

+0

相同的問題,你已經保存我的屁股,謝謝你的提示! – schwiz 2011-08-16 08:40:48

0

您必須複製並過去名稱空間和soap操作,它們與WSDL xml文件中出現的完全相同。 (在WSDL中它們沒有http://) 其實我試圖訪問本地web服務(服務安裝在本地服務器上)

但是我有另一個訪問外部的應用程序。NET網絡服務 (央行網路服務取得的匯率) 的WSDL命名空間和SOAPACTION包含HTTP:// 我的應用程序完美地工作而不刪除HTTP://

1

,增加了參數完美的代碼 這個作品試試這個

 SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.setOutputSoapObject(request); 
    envelope.dotNet = true; 
    PropertyInfo pi = new PropertyInfo(); 
    pi.setName("ProcName"); 
    pi.setValue(a); 
    pi.setType(int.class); 
    request.addProperty(pi); 
    pi=new PropertyInfo(); 
    pi.setName("UserName"); 
    pi.setValue(b); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi=new PropertyInfo(); 
    pi.setName("Password"); 
    pi.setValue(c); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi=new PropertyInfo(); 
    pi.setName("Paras"); 
    pi.setValue(d); 
    pi.setType(String.class); 
    request.addProperty(pi); 


    Object response = null; 

    HttpTransportSE androidHttpTransport = new HttpTransportSE(SOAP_ADDRESS); 

    try { 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
     response = envelope.getResponse(); 
    } catch (final Exception e) { 
     String error = "no"; 
    } 
    return response.toString(); 
} 
相關問題