簡體   English   中英

將Android Volley與ASP .NET Web API結合使用

[英]Using Android Volley with ASP .NET Web API

我正在嘗試從android客戶端從我的asp .net restful服務檢索資源。 我有一個MessagesController具有方法GetMessages:

[Authorize]
public IQueryable<Message> GetMessages()
{
    return db.Messages;
}

要訪問此資源,我向/token發送了一個請求,並獲得了一個密鑰,我可以從客戶端應用程序使用該密鑰來訪問資源。 我遇到的麻煩是,客戶端在嘗試訪問資源時收到302 http錯誤。

這是android客戶端中的方法:

public void setAllSendersAndAllMessages()
{
    String url = "Messages/GetMessages";
    showpDialog();
    String Url = baseUrl + url;


    JsonArrayRequest req = new JsonArrayRequest(Url,
            new Response.Listener<JSONArray>() {

                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());

                    try {

                        allSenders = new String[response.length()];
                        allMessages = new String[response.length()];
                        for (int i = 0; i < response.length(); i++) {

                            JSONObject message = (JSONObject) response.get(i);

                            allSenders[i] = message.getString("sender");
                            allMessages[i] = message.getString("messageContent");
                        }
                        setInitialViews();

                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(context, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                    }

                    hidepDialog();
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            Toast.makeText(context,error.getMessage(), Toast.LENGTH_SHORT).show();
            hidepDialog();
        }
    }){
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String>  headers = new HashMap<>();
            headers.put("Authorization", "bearer "+ token);
            return headers;
        }
    };

    mRequestQueue.add(req);

}

我重寫了getHeaders()方法以將授權令牌發送到服務。 此鍵和標頭在使用“郵遞員”時可完美工作,但由於某些未知原因在android客戶端中失敗。 如果有人可以提供一些建議,將不勝感激!

HTTP 302是URL錯誤,URL必須類似於: http:// server / WepApi / api / orders

服務器:您的IIS服務器名稱或服務器IP地址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM