0

HttpResponse から応答 uri を取得し、名前と値のペアに解析する必要があります。次の .NET フラグメントのアナログが必要です。

string authorizationRequestParameters = string.Format("client_id={0}&response_type=code&scope={1}&access_type=offline", ClientID, Scope);
Uri authorizationRequestUri = new Uri(OauthHost.AbsoluteUri + "?" + authorizationRequestParameters);
HttpWebResponse authorizationResponse = DoGet(authorizationRequestUri, cookies);
NameValueCollection authorizeResponseParameters = HttpUtility.ParseQueryString(authorizationResponse.ResponseUri.Query);
string callbackCode = authorizeResponseParameters["code"];

必要条件は、Java 版では DoGet メソッドが apache HttpResponse を返すことです。私がこれをやろうとした方法:

HttpResponse resp = hch.doGet("http://...?client_id=...&response_type=...&scope=...&access_type=...");
HttpEntity entity = resp.getEntity();
InputStream instream = entity.getContent();
System.out.print(IOUtils.toString(instream, "UTF-8"));

この方法で html コンテンツを受け取ることができますが、パラメーターを含むその一部である応答 Uri だけが必要です。どうやってやるの?

4

1 に答える 1

0

HttpWebResponse.ResponseUriContent-Locationプロパティは、ヘッダーまたはリクエストのいずれかに由来するようURIです。したがって、次のようなものが機能するはずです。

final String uri = "http://...?client_id=...&response_type=...&scope=...&access_type=...";
final HttpResponse resp = hch.doGet(uri);
final String contentLocation = resp.getFirstHeader ("Content-Location");
final String responseURI = contentLocation != null ? contentLocation : uri;
于 2012-11-27T16:17:47.657 に答える