2014-09-19 94 views
0

我可以使它像这样工作,但那里有一个更好的方法。任何建议?将参数从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 
} 

回答

0
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。这对于单元测试和主机不可知的更容易。

+1

我认为当你为你的内涵添加一些解释时,对于OP和更多的访问者会更有帮助。 – reporter 2014-09-19 13:11:56