2011-12-17 11 views
4

通貨変換アプリケーションを開発中で、適切な出力が得られません(ゼロになっています)。KSOAPを使用したWebサービス

私はhttp://www.webservicex.net/ws/WSDetails.aspx?CATID=2&WSID=10からwebserviceを使用しています。

WSDLのように関数を宣言:私のAndroidのクラス

<wsdl:types> 
    <s:schema elementFormDefault="qualified" targetNamespace="http://www.webserviceX.NET/"> 
    <s:element name="ConversionRate"> 
    <s:complexType> 
    <s:sequence> 
    <s:element minOccurs="1" maxOccurs="1" name="FromCurrency" type="tns:Currency"/> 
    <s:element minOccurs="1" maxOccurs="1" name="ToCurrency" type="tns:Currency"/> 
    </s:sequence> 
</s:complexType> 
</s:element> 
<s:simpleType name="Currency"> 
    <s:restriction base="s:string"> 
    <s:enumeration value="AFA"/> 
    <s:enumeration value="ALL"/> 
    <s:enumeration value="DZD"/> 
    <s:enumeration value="ARS"/> 
    <s:enumeration value="AWG"/> 
    <s:enumeration value="AUD"/> 
</s:restriction> 
</s:simpleType> 
<s:element name="ConversionRateResponse"> 
    <s:complexType> 
    <s:sequence> 
    <s:element minOccurs="1" maxOccurs="1" name="ConversionRateResult" type="s:double"/> 
    </s:sequence> 
    </s:complexType> 
    </s:element> 
    <s:element name="double" type="s:double"/> 
    </s:schema> 
</wsdl:types> 

public class MainActivity extends Activity { 

private static final String NAMESPACE = "http://www.webserviceX.NET"; 

private static String URL = "http://www.webserviceX.NET/CurrencyConvertor.asmx?WSDL"; 
private static final String METHOD_NAME = "ConversionRate"; 
private static final String SOAP_ACTION = "http://www.webserviceX.NET/ConversionRate"; 
private TextView lblResult; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    lblResult = (TextView) findViewById(R.id.result); 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 


    PropertyInfo propInfo=new PropertyInfo(); 
    propInfo.name="FromCurrency"; 
    propInfo.type=PropertyInfo.STRING_CLASS; 
    propInfo.setValue("AFA"); 


    PropertyInfo propInfo2 = new PropertyInfo(); 
    propInfo2.name="ToCurrency"; 
    propInfo2.type = PropertyInfo.STRING_CLASS; 
    propInfo2.setValue("AUD"); 

    request.addProperty(propInfo); 
    request.addProperty(propInfo2); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

    envelope.setOutputSoapObject(request); 
    envelope.dotNet=true; 

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

    try { 
    androidHttpTransport.call(SOAP_ACTION, envelope); 

    SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope.getResponse(); 

    lblResult.setText(resultsRequestSOAP.toString()); 


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

    } 

} 

誰もが間違っているものに提案を持っていますか?

THX!

private static String URL = "http://www.webserviceX.NET/CurrencyConvertor.asmx"; 

そして、これを試してみてください。

ダニエル

答えて

1

を入れてみてくださいhttp://www.webserviceX.NET/

であることを示しています。

Object resultsRequestSOAP = envelope.getResponse(); 

の代わりに、この:

SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope.getResponse(); 
+0

ありがとう!!!それは今働いています:) – Knaks

+0

答えとしてマークしてください。 –

+0

@enrmarcあなたが私の[WFSとksoap2-androidに関する質問](http://stackoverflow.com/questions/9237082/how-to-query-a-web-service-via)を見ていただければ幸いですポストリクエストアンドロイド)。 – JJD

0

あなたのサービス記述は、名前空間は、私はあなたのURL文字列があることだと思う余分/

+0

うーん、私はまだ、結果として0を取得しています:( – Knaks

+0

あなたの応答がdouble値の右ですか? –

+0

まず、提供されている通貨の種類によって、Webサービスが正常に動作しているかどうかを確認します。 Webサービスに問題がある場合は、コードをデバッグしようとしていないと、実際には助けられません。要求を作成して応答を取得するときに、ブレークポイントを挿入してみてください。 –

関連する問題