2017-05-27 75 views
0

我使用帶回調接口的抽象。我將發送請求發送到服務器和服務器響應302狀態碼。如何將響應頭中的位置設置爲變量字符串類型?然後,我想用全屏webview與此位置開始新的活動。響應302位置變爲抽象

這段代碼凌空類發送請求:

public StringPostRequest(Context context, String url, Map<String, String> params) { 
    this.params = params; 
    this.url = url; 
    mQueue = Volley.newRequestQueue(context, new NukeSSLCerts()); 
    } 

public void getString(final VolleyCallback callback) { 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url , 
      new Response.Listener<String>(){ 
       @Override 
       public void onResponse(String response) { 
        req = response; 
        callback.onSuccess(req); 

       } 
      } 
      ,new Response.ErrorListener(){ 
       @Override 
       public void onErrorResponse(final VolleyError error){ 
       final int status = error.networkResponse.statusCode; 
       // Handle 30x 
       if(HttpURLConnection.HTTP_MOVED_PERM == status || status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_SEE_OTHER) { 
        final String location = error.networkResponse.headers.get("Location"); 
        callback.onSuccess(location); 

       } 
      } 
    }) 
    { 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      return params; 
     } 
    }; 
    mQueue.add(stringRequest); 
} 
public interface VolleyCallback{ 
    void onSuccess(String req); 
} 

在主要活動中我創建地圖的POST請求。

Map<String,String> params = new HashMap<>(); 
    params.put("foo", "bar"); 
    params.put("foo1", "bar1"); 
    params.put("foo2", "bar2"); 

    StringPostRequest getRedirectUrl = new StringPostRequest(this,url,params); 
    getRedirectUrl .getString(new StringPostRequest.VolleyCallback() { 
     @Override 
     public void onSuccess(String req) { 
      Log.d("reqInMainact", req); 
      RedirectUrl[0] = req; 
     } 
    }); 
    return RedirectUrl[0]; 

但在響應頭位置寫不出來的redirectUrl [0](( 請幫助我

+0

這將是偉大的,如果你可以提供你的代碼 –

+0

好的)更新的問題 –

+0

你究竟返回'RedirectUrl [0];'到?你不能從回調中返回。您在**回調 –

回答

0

但在響應頭位置寫不出來的redirectUrl [0]

我確定它沒有,但是你編寫了異步代碼,就好像它是同步代碼一樣。

製作任何有的方法是void,並嘗試這個

StringPostRequest getRedirectUrl = new StringPostRequest(this,url,params); 
getRedirectUrl.getString(new StringPostRequest.VolleyCallback() { 
    @Override 
    public void onSuccess(String req) { 
     Log.d("reqInMainact", req); 

     Intent i = new Intent(CurrentActivity.this, NewActivity.class); 

     i.putExtra("URL",req); 
     startActivity(i); 
    } 
}); 

然後我想先從全屏網頁視圖的新活動與此位置

更多細節:

How do I pass data between Activities in Android application?

+0

內執行操作**我正在嘗試此操作。但在**字符串請求** **公共無效onSuccess(字符串請求)**獲取需要位置的HTML頁面。如何獲取位置網址? –

+0

我不知道那是什麼意思? –

0

我做容易)))我與舊的網址開始webview並在WebView中獲得重定向)謝謝所有和對不起