将params从android传递给Web Api

时间:2014-09-19 09:13:12

标签: android asp.net-web-api

我可以让它像这样工作,但必须有一个更好的方法。有什么建议吗?

ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("token", session.getAccessToken()));

HttpParams httpParameters = new BasicHttpParams();
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpPost httpPost = new HttpPost(URL);
try {
    httpPost.setEntity(new UrlEncodedFormEntity(params));
} catch (UnsupportedEncodingException e) {}
httpResponse = httpClient.execute(httpPost);

Web Api

[AcceptVerbs("GET", "POST")]
public IHttpActionResult FBToken()
{
    string token = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.Params["token"];

    //some code
}

1 个答案:

答案 0 :(得分:0)

public IHttpActionResult FBToken(TokenRequest request)
{
        //some code that uses request.Token
}

public class TokenRequest
{
    public string Token { get; set; }
}

更新

哎呀,抱歉想我输了更多。无论如何,这是解释。 UrlEncodedFormEntity将请求消息的内容类型设置为application / x-www-form-urlencoded。 ASP.NET Web API具有内置的媒体类型格式化程序,用于反序列化此类内容。通过使用复杂类型(TokenRequest类),我们要求Web API将请求主体绑定到此类型,并使用Token属性获取标记。这样做更好,因为我们不依赖于ASP.NET。这更容易进行单元测试和与主机无关。