0

運が悪かったので、ここ数日からこれに対する答えを探してみました。スタックオーバーフローの答えのいくつかでさえ役に立ちませんでした。

Android経由でUserTokenを受け取った後、ユーザーをチェックインしようとしています。で、認証されていないAPIがうまく機能するよう FileNotfoundExceptionになります。私は何かが足りないのですか?getInputStream()"https://api.foursquare.com/v2/venues/categories"

    URL url = new URL("https://api.foursquare.com/v2/checkins/add?oauth_token="+token);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.addRequestProperty("venueId","12238");
    conn.setDoInput(true);
    conn.setRequestMethod("POST");
    conn.setAllowUserInteraction(true);
    conn.connect();
    InputStream is = conn.getInputStream();
    String response = streamToString(is);
    return response;

たくさんの努力の末、なんとかこれを解決することができました。以下の私の答えを参照してください。

4

4 に答える 4

1

このクラスは、400以上のHTTPエラーコードに対してHttpURLConnectionをスローするという点で誤解を招きます。FileNotFoundException

したがって、必ずしも間違ったURL(404)である必要はなく、400(不正なリクエスト)、403(禁止)、500(内部サーバーエラー)などである可能性があります。

getResponseCodeこの方法を使用して、問題をより正確に示します。

于 2013-01-19T17:07:25.260 に答える
1

会場IDの追加に使用するのと同じ方法を使用してoauth_tokenを追加してみてください。また、venueidが無効であるため、実際の会場にユーザーをチェックインしていることを確認してください。

于 2013-01-11T01:38:12.217 に答える
0

最初:Yoyはhttps urlを持っており、HttpURLConnectionを作成しようとしています。HttpsURLConnectionを使用する必要があります。

2番目:conn.setDoOutput(true)を追加してみることができますが、「post」リクエストにはそれが必要です。そしてそれがなければ、サーバーはconn.setRequestMethod( "POST")に関係なく、あなたからgetリクエストを出そうとすることができます。また、ブラウザプラグインからヘッダーを確認して、リクエストに含めることもできます。

于 2013-01-18T15:57:59.200 に答える
0

Okieようやく問題を解決できました。上記のコードの問題が正確に何であったかはわかりませんが、次の問題は解決しました。

このAPIにはPOST呼び出しが必要ですが、venueIDでさえURLの一部である必要があり、addRequestPropertyがvenueIDを適切に送信していないようです。したがって、コードを次のように変更しました

URL url = new URL("https://api.foursquare.com/v2/checkins/add?venueId=12238&oauth_token="+token);

そして、これは問題を解決しました。皆さんありがとう

于 2013-01-19T08:38:27.387 に答える