【问题标题】:User authentication web service code not running from Android app用户身份验证 Web 服务代码未从 Android 应用程序运行
【发布时间】:2011-08-14 13:29:49
【问题描述】:

我在从我的 Android 应用程序中调用我的网络服务以进行用户身份验证时遇到问题。当我输入我知道正确的用户名和密码时,它在模拟器屏幕上给了我一个奇怪的 xml 错误

这是我的安卓代码:

           package com.demo;
           import android.app.Activity;
           import android.os.Bundle;
           import java.io.BufferedReader;
           import java.io.IOException;
           import java.io.InputStream;
           import java.io.InputStreamReader;
           import java.util.ArrayList;
           import java.util.List;

           import org.apache.http.HttpResponse;
           import org.apache.http.NameValuePair;
           import org.apache.http.client.ClientProtocolException;
           import org.apache.http.client.HttpClient;
           import org.apache.http.client.entity.UrlEncodedFormEntity;
           import org.apache.http.client.methods.HttpPost;
           import org.apache.http.impl.client.DefaultHttpClient;
           import org.apache.http.message.BasicNameValuePair;

          //import android.app.Activity; 
          //import android.os.Bundle;
            import android.util.Log;
            import android.view.View;
            import android.view.View.OnClickListener; 
            import android.widget.Button;
            import android.widget.EditText;
            import android.widget.TextView;

          public class AndroidLogin extends Activity implements OnClickListener {
           /** Called when the activity is first created. */
            Button ok,back,exit;
          TextView result;
            @Override
              public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

         ok =(Button)findViewById(R.id.btn_login);
            ok.setOnClickListener(this);

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

         }

          public void postLoginData() {
           // Create a new HttpClient and Post Header
          HttpClient httpclient = new DefaultHttpClient();


        HttpPost httppost = new HttpPost("http://10.0.2.2/testlogin/Service1.asmx");

          try {
        // Add user name and password
     EditText uname = (EditText)findViewById(R.id.txt_username); 
     String username = uname.getText().toString();

     EditText pword = (EditText)findViewById(R.id.txt_password);
     String password = pword.getText().toString();

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", username));
        nameValuePairs.add(new BasicNameValuePair("password", password));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        Log.w("demo", "Execute HTTP Post Request");
        HttpResponse response = httpclient.execute(httppost);

        String str = inputStreamToString(response.getEntity().getContent()).toString();
        Log.w("demo", str);

        if(str.toString().equalsIgnoreCase("true"))
        {
         Log.w("demo", "TRUE");
         result.setText("Login successful");   
        }else
        {
         Log.w("demo", "FALSE");
         result.setText(str);             
        }

    } catch (ClientProtocolException e) {
     e.printStackTrace();
    } catch (IOException e) {
     e.printStackTrace();
    }
} 

      private StringBuilder inputStreamToString(InputStream is) {
         String line = "";
         StringBuilder total = new StringBuilder();
 // Wrap a BufferedReader around the InputStream
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
 // Read response until the end
        try {
          while ((line = rd.readLine()) != null) { 
          total.append(line); 
  }
       } catch (IOException e) {
        e.printStackTrace();
        }
 // Return full string
        return total;
         }

@Override
public void onClick(View view) {
  if(view == ok){
    postLoginData();
  }
}
  }

这是我在模拟器上的输出图片:http://www.flickr.com/photos/66352826@N07/6041731494/ 这里是 logcat:http://pastebin.com/YmH0h6SF

请有人帮助我

【问题讨论】:

  • 通读服务返回的异常。我不能这样做,因为在你提供的屏幕截图上它被剪切了。
  • @pkk:即使我无法查看完整的内容..如果您愿意,可以检查我的 logcat...有没有办法增加模拟器屏幕的大小,这样我就可以看到隐藏的东西
  • 使用 logcat 记录消息,编辑您的帖子并将其添加到那里:Log.d("tag", str);靠近 Log.w("demo", "FALSE");
  • 你的意思是我应该替换 log.w("demo", "FALSE");通过 Log.d("tag",str) ?
  • 不,对不起,我没有注意到,您还附加了 logcat 输出。

标签: android web-services visual-studio-2008


【解决方案1】:

我不是 .net 专家,但从 logcat 日志看来,服务器端出现了问题。这是一个类似问题的链接(建议您在服务器端附加调试器,以获取更多详细信息): http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/fdb3c1f0-9e23-493b-ab6a-1c7e69c7305f/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多