【问题标题】:How to use WebService in Android?如何在 Android 中使用 WebService?
【发布时间】:2014-03-18 13:21:07
【问题描述】:

我在asp.net中做了一个webservice,方法如下:

[WebMethod]
    public string getUser(string usr)
    {

        var json = "";
        var user = from result in dc.Persons
                   where result.username == usr
                   select result.password;

        JavaScriptSerializer jss = new JavaScriptSerializer();
       json = jss.Serialize(user);
        return json;
    }

返回指定用户的密码。

但是如何在我的 android 应用程序中使用此方法?

假设我想获取用户的密码:Rambo ?

【问题讨论】:

标签: android asp.net web-services


【解决方案1】:

为此,我们通常使用 REST Web 服务和 GET/Post。为此使用 Volley,网络上有许多如何使用它的示例。这是我最喜欢的: Tutorial for Volley

Example.URL: http://DomainOrIpAdress/Accounts/getPassword?user=Rambo <- this is GET Request OR
             http://DomainOrIpAdress/Accounts/getPassword <- this is POST Request

本教程展示了如何获取您返回 json 的响应,然后您必须使用 JsonObjectRequest。好吧,这就是我多次这样做的方式。

【讨论】:

    【解决方案2】:

    在Android中,你需要像这样使用AnyncTask在后台运行httpget调用。

    private final String API_URL = "www.example.com/api/{YourControllerName}/getUser?usr="
    private class HttpGetter extends AsyncTask<URL, Void, Void> {
    
                    @Override
                    protected Void doInBackground(arg... args) {
                            // TODO Auto-generated method stub
                            StringBuilder builder = new StringBuilder();
                            HttpClient client = new DefaultHttpClient();
                            HttpGet httpGet = new HttpGet(API_URL + arg[0]);
    
                            try {
                                    HttpResponse response = client.execute(httpGet);
                                    StatusLine statusLine = response.getStatusLine();
                                    int statusCode = statusLine.getStatusCode();
                                    if (statusCode == 200) {
                                            HttpEntity entity = response.getEntity();
                                            InputStream content = entity.getContent();
                                            BufferedReader reader = new BufferedReader(
                                                            new InputStreamReader(content));
                                            String line;
                                            while ((line = reader.readLine()) != null) {
                                                    builder.append(line);
                                            }
                                            Log.v("Getter", "Your data: " + builder.toString()); //response data
                                    } else {
                                            Log.e("Getter", "Failed");
                                    }
                            } catch (ClientProtocolException e) {
                                    e.printStackTrace();
                            } catch (IOException e) {
                                    e.printStackTrace();
                            }
    
                            return null;
                    }
        }
    
    HttpGetter get = new HttpGetter();
    get.execute("Rambo");
    

    【讨论】:

    • 是的,这是最过时的方法,但是是的,已经有很多图书馆可以做到这一点。比如我说的。
    • 感谢您添加听起来像销售员的评论。祝你一切顺利。
    • 别误会我的意思,我的主要观点是 GOOGLE 作为示例,它的 volley 库可以更好地完成我们使用“手动”编码所能做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多