0

これは私の URL 投稿です。

    String urlParameters = "&consumer_key="+AppSession.getPocketConsumerKey()+"&client_secret="+AppSession.getPocketRedirectUri();
    String request = "https://getpocket.com/v3/oauth/request";
    URL url;
    try {




        url = new URL(request);
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();           
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setInstanceFollowRedirects(false); 
        connection.setRequestMethod("POST"); 
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
        connection.setRequestProperty("charset", "utf-8");
        connection.setRequestProperty("X-Accept","application/x-www-form-urlencoded");
        connection.setUseCaches (false);

        connection.connect();
        DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
        wr.writeBytes(urlParameters);
        Log.d("urlparmas",urlParameters);
        wr.flush();
        wr.close();



        InputStream is = connection.getInputStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuffer response = new StringBuffer(); 
        while((line = rd.readLine()) != null) {
          response.append(line);
          response.append('\r');
        }
        rd.close();
        Log.d( "response",response.toString());

      } catch (Exception e) {

        e.printStackTrace();


      } 

私のリダイレクト URI: MyApp://callback

<activity android:name="com.app.account.Register" android:launchMode="singleTask">
                <intent-filter>

     <action android:name="android.intent.action.VIEW" />
     <category android:name="android.intent.category.DEFAULT" />
     <category android:name="android.intent.category.BROWSABLE" />
     <data android:scheme="MyApp" android:host="callback"/>


                    </intent-filter>
            </activity>

そのため、コールバック URL から応答がありません。コードのどこが間違っているのだろうか。

編集:

InputStream is = connection.getInputStream();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
            String line;
            StringBuffer response = new StringBuffer(); 
            while((line = rd.readLine()) != null) {
              response.append(line);
              response.append('\r');
            }
            rd.close();
            Log.d( "response",response.toString());

これにより、エラーが発生します。

4

1 に答える 1

1

要求タイプを設定し、入力ストリームが必要であることを指定する必要がある場合があります。入力ストリームを使用する前に、リクエストからのレスポンス コードも確認する必要があります。

以下に投稿した例外は、カスタム SSL 証明書を使用しているサーバーが原因で問題が発生したことを示しています。おそらく、HttpsURLConnection が使用できるローカル ssl トラスト ストアを作成する必要があります。このブログ投稿では、これを行う方法に関するいくつかのテクニックについて説明します。これを行うと、接続から使用できます

何かのようなもの

HttpsURLConnection yc = (HttpsURLConnection)pocketUrl.openConnection();
yc.setDoInput(true);
yc.setRequestMethod("GET");
yc.setSSLSocketFactory(sslContext.getSocketFactory());
if (urlConnection.getResponseCode() != 200) {
    // handle error here
    final String responseMessage = yc.getResponseMessage();
    Log.e(TAG, "Failed Response: " + responseMessage);
    return;
}

BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
于 2012-12-06T21:36:03.513 に答える