java - 使用java处理应用内苹果收据

标签 java iphone json in-app-purchase

我正在使用 Java 后端。用户进行应用内购买后,前端将收据发送给我。反过来,我要将收据发送给苹果进行确认;然后苹果是解码收据并发回给我一个 JSON 字典。我的问题是关于将收据发回苹果,以便我可以获得 json 响应。我正在使用下面的代码。但我一直从苹果那里得到 {"status":21002} 和一些关于“无效的 cookie header ”的信息。有什么解决办法吗?

    String url = "https://buy.itunes.apple.com/verifyReceipt";
    DefaultHttpClient client = null;
    try {
        String input = IOUtils.toString(is);
        log.info("THE INPUTSTREAM: " + input);
        JSONObject receipt = new JSONObject();
        receipt.put("receipt-data", input);

        client = new DefaultHttpClient();
        HttpPost post = new HttpPost(url);
        StringEntity entity = new StringEntity(receipt.toString());
        entity.setContentType("application/json");
        post.setEntity(entity);
        HttpClientParams.setRedirecting(post.getParams(), false);

        HttpResponse response = client.execute(post);
        if (300 <= response.getStatusLine().getStatusCode()) {
            throw new RuntimeException("No response from iTune store. status code: " + response.getStatusLine().getStatusCode());
        }

        if (null == response.getEntity()) {
            log.info("Response is null");
            throw new Exception("Response is null");
        }

        StringBuilder sb = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        for (String line; null != (line = reader.readLine());) {
            sb.append(line);
        }
        JSONObject json = new JSONObject(sb.toString());
        log.info("THE JSON" + json);
//Then work with json below

    } catch (Exception e) {
        throw new WebApplicationException(Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build());
    } finally {
        if (null != client) {
            client.getConnectionManager().shutdown();
        }
    }

最佳答案

我认为不需要 cookie?尝试

HttpClientParams.setCookiePolicy(client.getParams(), CookiePolicy.IGNORE_COOKIES);

关于java - 使用java处理应用内苹果收据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707557/

相关文章:

javascript - Rally - 按里程碑名称过滤史诗

json - F# 将 JSON 反序列化为字符串或节点

iphone - 无法完全符号化 iOS 崩溃日志

java - 在 JSP 中显示包含 csv 数据的 java 对象的最佳方式?

java - 方法重载和重写中的编译时和运行时绑定(bind)

java - JavaSE 和 JavaEE 之间的主要区别是什么?

iphone - 在touchesMoved方法中检测[UITouch view]

iphone - 如何检查 "UITextField with tag"上哪个 Textfield 标签被按下/触摸或单击的值?

json - fromJSON 错误(粘贴(原始数据,崩溃 = "")): unclosed string

java - 如何在 Primefaces 数据表中表示嵌套数据?