サーバーからデータを取得しようとしています。主な問題は、サーバーにアクセスできないことですが、もちろんリクエストの詳細はわかっています。サーバー呼び出しのテストにPostManを使用しており、OkHttpを使用してAndroidに実装しています。
これが、HttpUrlConnectionまたはOkHttpの両方を使用してAndroid側のサーバーから取得したものです。
{"collection":{"version": "1.0"、 "href": " http://development.abc.com:80/ "、 "links":[{"href": "#"、 "rel" : "header"、 "prompt": "Students"}、{"href": "#"、 "rel": "header"、 "prompt": "CFA"}、{"href": "signup"、 " rel ":"ヘッダートライアル "、"プロンプト ":"無料トライアル "}、{" href ":"約 "、" rel ":"フッターサイドバー "、"プロンプト ":"概要 "}、{" href ": "testimonials"、 "rel": "footer sidebar"、 "prompt": "Testimonials"}、{"href": "contact"、 "rel": "footer"、 "prompt": "Contact "}、{" href ":" faq "、" rel ":" footer sidebar "、" prompt ":" FAQs "}、{" href ":" login "、" rel ":" login "、" prompt ":"ログイン"}]、.......
私は両側で同じヘッダーを使用しています。
("accept", "application/vnd.collection+json")
("authorization", "Basic secret==")
テストログインに同じ資格情報を使用する:
不思議なことに、同じサーバー呼び出しがPostManで以下のデータを提供しています
{"コレクション":{"バージョン": "1.0"、 "href": " http://development.abc.com:80/ch/re/videos "、 "リンク":[{"href": " http ://development.abc.com:80 / ch / re / vr "、" rel ":" menu vrated "、" prompt ":" Vrated "}、{" href ":" http://development.abc .com:80 / user / watcr "、" rel ":" menu watchlater "、" prompt ":"後で見る "} .. ..
これが私のコードです:
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
OkHttpClient client =new OkHttpClient.Builder()
.cookieJar(new CookieJar() {
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
cookieStore.put(url, cookies);
cookie=cookies.get(0).toString();
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
List<Cookie> cookies = cookieStore.get(url);
return cookies != null ? cookies : new ArrayList<Cookie>();
}
})
.build();
Request request = new Request.Builder()
.url("http://development.abc.com/login")
.post(body)
.addHeader("accept", "application/vnd.collection+json")
.addHeader("authorization", "Basic secret==")
.addHeader("cache-control", "no-cache")
.addHeader("Cookie",cookie)
.addHeader("content-type", "application/x-www-form-urlencoded")
.build();
Response response = null;
try
{
response=client.newCall(request).execute();
String str=response.body().string();
} catch (Exception e) {
e.printStackTrace();
}
同じサーバー呼び出しが異なる結果を返すにはどうすればよいですか。
「Curlの結果はPostmanの結果とは異なります」からuser agent
、ヘッダーも追加する必要があることを確認したので、これも試しましたが、うまくいきませんでした。
この呼び出しに間違った資格情報(つまり、本文:電子メール、パスワード)を使用すると、OkhttpとPostManの両方で同じエラーが発生するというもう1つのことがあります。
ありがとう。
ついに私はこれの問題を理解しました。
実際には、リダイレクトの問題であり、サーバーの担当者と話し合う必要があります。それを機能させるために私がすることは
はい、ここでは郵便配達員と同じデータです。
みんな、ありがとう :)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加