【问题标题】:How to POST And GET with the same Request Using Android Studio And Web Api如何使用 Android Studio 和 Web Api 发布和获取相同的请求
【发布时间】:2016-02-18 18:44:08
【问题描述】:

我正在使用 Android Studio 开发一个 Android 应用 和后端使用 Asp.Net Web API。

Web API 端

[System.Web.Http.AcceptVerbs("GET", "POST")]
[System.Web.Http.HttpGet]
public dynamic GetTest(string name)
{
    List<person> persons = new List<person>()
    {
       new person { ID = 1, Name = "Loai" },
       new person { ID = 2, Name = "rami" },
       new person { ID = 3, Name = "Omar" },
       new person { ID = 4, Name = name}
     };
    IEnumerable<person> p = persons.ToList();
    return new { Students = p };
}

在这个链接上

http://qjtest.azurewebsites.net/api/test

如果你想设置 name 参数值,你可以使用

http://qjtest.azurewebsites.net/api/test?name=ayman

Android Studio 端

我用过这段代码

  final String URL = "http://qjtest.azurewebsites.net/api/test";
            HashMap<String, String> params = new HashMap<String, String>();
            params.put("name", "ayman");
            JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, URL, new JSONObject(params),
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                JSONArray jsonArray = response.getJSONArray("Students");
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject student = jsonArray.getJSONObject(i);
                                    String ID = student.getString("ID");
                                    String Name = student.getString("Name");
                                    textview.append(ID + " - " + Name + "\n");
                                }
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.e("Error: ", error.getMessage());
                }
            });
            requestQueue.add(req);

当我运行应用程序并按下按钮时,这是 logcat 中显示的错误

11-17 15:08:48.035 9628-9654/com.sqlite_test.alhalabi.loai.test_gson E/Volley: [155]

BasicNetwork.performRequest:意外响应代码 404 http://qjtest.azurewebsites.net/api/test 11-17 15:08:48.041 9628-9628/com.sqlite_test.alhalabi.loai.test_gson E/Volley:1 2.onErrorResponse:错误:

【问题讨论】:

  • 不要使用来自 androidhive 的这个糟糕的教程......或者至少把它读到最后! ApplicationController.getInstance() 返回 null 因为您忘记复制和粘贴某些内容
  • 我在理解您的问题时遇到了一个小问题,您是在询问如何在检索回复的同时发帖吗?或者您是在问如何在一次通话中发送 POST 和 GET 数据?如果是后者,那么您可以使用键值对并将获取参数附加到 url "example.com?ID="+ id +"&name="+name 的末尾
  • stackoverflow.com/a/17572601/3593066检查这个链接它有不同的链接,这将帮助你
  • 现在请学习 HTTP 的基础知识...... HTTP 404 是......好吧,HTTP 404(没什么好解释的,每个人都知道 404 是什么)

标签: android asp.net-web-api android-volley jsonobject


【解决方案1】:

您可以参考以下示例:

        String url = "http://qjtest.azurewebsites.net/api/test?name=ayman";

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Toast.makeText(mContext, "onResponse:\r\n" + response.toString(), Toast.LENGTH_SHORT).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(mContext, "onErrorResponse:\r\n" + error.toString(), Toast.LENGTH_SHORT).show();
            }
        });

        requestQueue.add(jsonObjectRequest);

【讨论】:

  • 这很简单,谢谢。我想传递更多的1个参数怎么样(每个参数将用逗号分隔?)
  • url参数:String url = String.format("http://yoursite.com/api/test?param1=%1$s&amp;param2=%2$s", value1, value2);
  • @BNK 嗨,你能帮我解决这个问题吗?我被困住了。stackoverflow.com/questions/33717120/…
  • @Moudiz 我的安卓应用经常通过网络服务(web api)从服务器获取数据,
  • @BNK 那你如何处理缓存呢?
猜你喜欢
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 2017-08-21
  • 2018-08-17
  • 1970-01-01
  • 2021-12-30
相关资源
最近更新 更多