我可以让它像这样工作,但必须有一个更好的方法。有什么建议吗?
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
}
答案 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。这更容易进行单元测试和与主机无关。