在android中编写语法需要帮助

时间:2011-04-07 12:49:38

标签: java android web-services http soap

我在Android中面临一些问题,因为我是新手。我需要知道如何在Android中编写语法来解决以下问题。

问题: 我有.net网络服务(www.somesite.com)。该Web服务器具有一种身份验证方法,该方法需要用户名和密码作为参数进行身份验证。一旦我使用身份验证方法设置了这些内容,它将允许我调用Web服务器中存在的其余功能。我有用ASP编写的源代码。我想在Android中编写相同的代码。

 private MyServerAPI.Service _service;
 _service = new MyServerAPI.Service();

MyServerAPI.DTAuthHeader auth = new MyServerAPI.DTAuthHeader();
auth.Username = ConfigurationManager.AppSettings["MyServerAPI.user"];
auth.Password = ConfigurationManager.AppSettings["MyServerAPI.pass"];

_service.DTAuthHeaderValue = auth;
_service.Url = ConfigurationManager.AppSettings["MyServerAPI.service"];

基本上,我想在Android中编写与上述代码相同的内容。

2 个答案:

答案 0 :(得分:0)

有一个用于处理名为KSOAP2的WebServices的库。找到它here

使用它并注意您的服务器如何要求发送用户名和密码。

<强>更新
代码段:

SoapObject soapRequest = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME) ;
    soapRequest.addProperty("appName","MyCoolApp" );
    soapRequest.addProperty("sEmail","test@example.com" );
    soapRequest.addProperty("sPassword","test" );
    SoapSerializationEnvelope soapEnvelope = new     SoapSerializationEnvelope(SoapEnvelope.VER11);
    soapEnvelope.dotNet  = true;
    soapEnvelope.setOutputSoapObject(soapRequest);

    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

    try{
    httpTransport.call(SOAP_ACTION, soapEnvelope);
    Object response = soapEnvelope.getResponse();
    Log.d("-----RESPONSE",""+response);
    }catch (Exception exception){
    Log.d("RESPONSE",""+exception.toString());
    }

虽然我不鼓励在这里发布整个代码,但由于你似乎遇到了麻烦,我希望这对你有所帮助。

或等一下我会在博客上详细介绍。

答案 1 :(得分:0)

如果您不想依赖第三方库,那么您也可以使用android本身的inbuild类。

这是一个用于在您的网络服务器上发布数据以及传递用户名和密码的功能。

public void postDataToWeb() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("www.yoursite.com");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("Username", "Paresh"));
        nameValuePairs.add(new BasicNameValuePair("Password", "PM@Android"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
} 

现在,您在输入流中有响应(在上面的示例中,'是'),您可以使用输入流。