【问题标题】:Help needed in writing syntax in android在android中编写语法需要帮助
【发布时间】:2011-04-07 12:49:37
【问题描述】:

我在 Android 中遇到了一些问题,因为我是新手。我需要知道如何在 Android 中为以下问题编写语法。

问题: 我有一个 .net 网络服务 (www.somesite.com)。该网络服务器具有一种身份验证方法,该方法需要用户名和密码作为参数来进行身份验证。一旦我使用身份验证方法设置了这些内容,它将允许我调用 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中写和上面的代码一样的东西。

【问题讨论】:

    标签: java android web-services http soap


    【解决方案1】:

    有一个名为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());
        }
    

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

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

    【讨论】:

    • 能否请您写一个示例 sn-p 并发布,因为这对我们来说非常紧急
    • 谢谢谢赫,当然我会等你的博客.. 非常感谢 :).. 我会看看你的代码。
    • 谢谢 :) 如果此答案解决了您的问题,您可以将其标记为已解决。
    • 您好,您的代码很好,但我们面临的另一个问题是,网络服务器中有一个身份验证类。我们不确定如何创建它的实例并调用它......你有什么想法吗?
    • 是的,Sheikh 我肯定会标记,但我卡在上面的评论部分了.. 请看看有什么办法吗?
    【解决方案2】:

    如果你不想依赖 3rd 方库,那么你调用也使用 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
        }
    } 
    

    现在,您在 inputstream 中有响应(在上面的示例中,“is”),您可以使用 inputstream。

    【讨论】:

    • 嗨 Paresh,感谢您的回复,我想知道如何在 Android 中创建一个存在于 .net Web 服务中的类的实例。
    • 你能帮我吗?我试过这段代码,你能告诉我是否也应该传递 Content-type 的参数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多