将参数从android传递到Web Api
问题描述:
我可以使它像这样工作,但那里有一个更好的方法。任何建议?将参数从android传递到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);
网络API
[AcceptVerbs("GET", "POST")]
public IHttpActionResult FBToken()
{
string token = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.Params["token"];
//some code
}
答
public IHttpActionResult FBToken(TokenRequest request)
{
//some code that uses request.Token
}
public class TokenRequest
{
public string Token { get; set; }
}
UPDATE
哎呀,对不起,我想更多的输入。无论如何,这里是解释。 UrlEncodedFormEntity
将请求消息的内容类型设置为application/x-www-form-urlencoded。 ASP.NET Web API具有内置的媒体类型格式化程序,用于对这些内容进行反序列化。通过使用复杂类型(TokenRequest
类),我们要求Web API将请求主体绑定到此类型,并使用Token
属性获取令牌。这比较好,因为我们没有在任何地方依赖于ASP.NET。这对于单元测试和主机不可知的更容易。
我认为当你为你的内涵添加一些解释时,对于OP和更多的访问者会更有帮助。 – reporter 2014-09-19 13:11:56