2015-11-17 49 views
2

我正在开发使用Android Studio的Android应用程序 和后端使用Asp.Net Web API。如何使用Android Studio和Web Api以相同请求进行POST和GET

网络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

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

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: Unexpected response code 404 for 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: Error:

+0

可能重复[什么是空指针异常,以及如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how- do-i-fix-it) – Selvin

+1

不要使用androidhive这个不好的教程...或者至少读完它! ApplicationController.getInstance()返回null,因为你忘了复制并粘贴一些东西 – Selvin

+0

我有一个轻微的问题,理解你的问题你问如何发布在检索响应的同时?或者你问如何在一次调用中发送POST和GET数据?如果是后者,则可以使用键值对,并将url参数添加到url“ ”http://example.com?ID="+ id +“&name =”+ name – TheHidden

回答

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); 
+0

这很简单,谢谢。那么我想通过更多的1参数(每个参数将逗号分隔吗?) – Loai

+0

对于URL参数:'String url = String.format(“http://yoursite.com/api/test?param1=%1 $ s&param2 =%2 $ s“,value1,value2);' – BNK

+0

@BNK嗨,你可以帮助我解决这个问题吗?我被卡住了.http://stackoverflow.com/questions/33717120/sqlite-get-all-data-and-pass-it-to-an-adapter?noredirect = 1#comment55205556_33717120 – Moudiz

相关问题