2014-09-19 90 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