2014-09-17 2 views
3

개조 서비스를 사용 중입니다.개조 URL 리디렉션 URL에서 매개 변수 가져 오기

다른 끝점으로 리디렉션되는 끝점이 있습니다. 후자 (내가 끝내는 끝점)에는 URL에 필요한 매개 변수가 있습니다. 이 매개 변수의 값을 얻는 가장 좋은 방법은 무엇입니까?

Retrofit을 사용하여 리디렉션되는 URL을 얻는 방법을 알 수조차 없습니다.

+0

같은 문제가 있으면 더 이상 업데이트가 필요합니까? – WenChao

+0

@WenChao OkHttp 네트워크 인터셉터를 사용하여 결과 Response를 가져 와서 URL을 얻습니다. –

+0

이 질문에 대한 대답으로 업데이트되었습니다. –

답변

2

OkHttp의 응답을 통해 와이어 레벨 요청 (https://square.github.io/okhttp/3.x/okhttp/okhttp3/Response.html#request--)이 제공됩니다. 이것은 리디렉션에서 응답을 시작한 요청입니다. 요청은 HttpUrl을 제공하고 HttpUrl은 매개 변수의 키와 값, 경로 등을 제공 할 수 있습니다.

Retrofit 2에서는 retrofit2.Response.raw()를 사용하여 okhttp3.Response를 가져온 다음 위.

0

개조를 사용 중입니다. 이 방법으로 리디렉션 URL을 얻을 수 있습니다.

희망이 있으면 도움이 될 것입니다.

1

이 해결책은 인터셉터를 사용하는 것입니다.

private Interceptor interceptor = new Interceptor() { 
    @Override 
    public okhttp3.Response intercept(Chain chain) throws IOException { 
     okhttp3.Response response = chain.proceed(chain.request()); 
     locationHistory.add(response.header("Location")); 
     return response; 
    } 
}; 

는 HttpClient를에 인터셉터를 추가하고 그

public void request(String url) { 
    OkHttpClient.Builder client = new OkHttpClient.Builder(); 
    client.followRedirects(true); 
    client.addNetworkInterceptor(interceptor); 
    OkHttpClient httpClient = client.build(); 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(url) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(httpClient) 
      .build(); 
} 

는 이제 전체 리디렉션 기록을 전체 액세스 권한 (이 예를 들어 2.0을 사용하여) 갱신하는 것이 추가 할 수 있습니다.

+0

전체 리디렉션 기록에 대한 전체 액세스 코드는 무엇입니까? – compte14031879

+0

아마도 더 completed 대답 : http://stackoverflow.com/questions/31667230/how-to-get-the-response-url-from-retrofit – compte14031879

+0

위치 내 목록 내 경우에 있었지만 쉽게 될 수 목록 < okhttp3.Response>. 그 다른 답변은 Android와 관련이 있으며 광산은 일반적인 Java입니다. –

관련 문제