簡體   English   中英

使用HTTP POST在Android中使用ASP.NET WebApi HTTP服務

[英]Consume ASP.NET WebApi HTTP service in Android with HTTP POST

我已經實現了ASP.NET WebApi,並通過HTTPPOST在Android應用程序中使用了它。 較少參數的方法可以完美地調用,但是帶有參數的方法在Google Chrome中的Advanced Rest Client中可以正常工作,而HTTP GET也可以完美地工作。

Android中的呼叫者代碼:

String url = "http://192.168.15.3/api/user"    

HttpPost postMethod = new HttpPost(url);

postMethod.setHeader("Content-Type", "application/json; charset=utf-8");
postMethod.setHeader("Accept", "*/*");
postMethod.setHeader("Accept-Encoding", "gzip, deflate");
postMethod.setHeader("Accept-Language", "en-US,en;q=0.8");

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("id", "1"));

DefaultHttpClient hc = new DefaultHttpClient();         
HttpResponse response;
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
response = hc.execute(postMethod);
HttpEntity entity = response.getEntity();               
InputStream inStream = entity.getContent();
String result = convertStreamToString(inStream);
Log.e("Result: ", result);              

控制器:

public class UserController : ApiController
{
    UserCredentials[] users = new UserCredentials[] 
    { 
        new UserCredentials { User_ID = "1", User_Name = "testuser", Password = "test", First_Name = "Test", Last_Name = "User",
                              Email = "testuser@dummy.com", Phone ="123456789", Mobile = "123456789", User_Type = "user" }, 
        new UserCredentials { User_ID = "2", User_Name = "testuser2", Password = "test", First_Name = "Test", Last_Name = "User",
                              Email = "testuser2@dummy.com", Phone ="123456789", Mobile = "123456789", User_Type = "user" }
    };

    [AcceptVerbs("POST")]
    public IEnumerable<UserCredentials> GetAllUsers()
    {
        return users;
    }

    [AcceptVerbs("POST")]
    public IHttpActionResult GetUser(string id)
    {
        var user = users.FirstOrDefault((p) => p.User_ID.Equals(id));
        if (user == null)
        {
            return NotFound();
        }
        return Ok(user);
    }
}

錯誤: {“消息”:“未找到與請求URI'http: //192.168.15.3/api/user '相匹配的HTTP資源。”,“ MessageDetail”:“在控制器'用戶'上未找到任何操作符合要求。“}

由於您的控制器沒有任何匹配的httppost方法,因此拋出錯誤。 您正在嘗試將數據發布到接受GET請求的方法。

WebApi使用基於約定的方法名稱。 您的方法以“ Get”開頭,因此它將以以下方式映射請求:

獲取所有用戶-GET-/ api / users通過ID獲取用戶-GET-/ api / users / id

因此,您可以使用HttpGet請求而不是POST來調用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM