2013-06-21 58 views
1

我有一个Android应用程序,它使用“Google Play应用内结算”库来购买应用内。使用Android购买状态API

我读过,最好使用购买状态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(); 

但我无法连接到谷歌,可能是因为我在代理之后。当我使用这些类时,我不知道如何配置代理设置。

得到的错误是:

java.net.SocketTimeoutException:连接超时

请帮帮忙!

回答

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未找到),但是这是一个不同的问题。