1

Android アプリケーションがあり、「Google Play In-app Billing」ライブラリを使用してアプリ内で購入しています。

Purchase Status API (Google Play Android Developer API v1.1) を使用して、バックエンド サーバーで購入を確認する方がよいと読みました。

リフレッシュ トークンの取得方法、それを使用してアクセス トークンを取得する方法、および API の使用方法に関する例を見つけました。

        System.getProperties().put("http.proxyHost", "10.12.54.8");
        System.getProperties().put("http.proxyPort", "8080");

        HttpTransport HTTP_TRANSPORT = new NetHttpTransport();              

        JsonFactory JSON_FACTORY = new JacksonFactory();

        TokenResponse tokenResponse = new TokenResponse();
        tokenResponse.setAccessToken(accessToken);
        tokenResponse.setRefreshToken(refreshToken);
        tokenResponse.setExpiresInSeconds(3600L);

        tokenResponse.setScope("https://www.googleapis.com/auth/androidpublisher/v1.1/applications");
        tokenResponse.setTokenType("Bearer");

        HttpRequestInitializer credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT).setJsonFactory(JSON_FACTORY)
                .setClientSecrets(GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET).build().setFromTokenResponse(tokenResponse);

        AndroidPublisher publisher = new AndroidPublisher.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(GOOGLE_PRODUCT_NAME).build();                    

        AndroidPublisher.Inapppurchases purchases = publisher.inapppurchases();
        Get get = purchases.get(GOOGLE_PACKAGE_NAME, ITEM_ID, purchaseToken);
        InappPurchase purch = get.execute();

しかし、おそらくプロキシの背後にいるため、Google に接続できません。これらのクラスを使用する場合、プロキシ設定の構成方法がわかりません。

得られたエラーは次のとおりです。

java.net.SocketTimeoutException: 接続タイムアウト

助けてください!

4

1 に答える 1

0

私は解決策を見つけました。

NetHttpTransport の代わりに、次のように ApacheHttpTransport を使用します。

HttpHost proxy = new HttpHost("10.12.54.8", 8080, "http");
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
ApacheHttpTransport HTTP_TRANSPORT = new ApacheHttpTransport(client);       

現在、別のエラー (404 Not found) が発生していますが、これは別の問題です。

于 2013-06-24T12:55:59.507 に答える