2017-05-27 42 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中获得重定向)谢谢所有和对不起