обработать в приложении квитанцию ​​Apple с помощью Java - PullRequest
2 голосов
/ 03 января 2012

Я использую Java-бэкэнд. После того, как пользователь выполняет покупку из приложения, клиент отправляет мне квитанцию. В свою очередь, я должен отправить квитанцию ​​Apple для подтверждения; Затем Apple расшифрует квитанцию ​​и отправит мне обратно словарь JSON. У меня вопрос об отправке квитанции обратно в Apple, чтобы я мог получить ответ JSON. Я использую код ниже. Но я продолжаю получать {"status": 21002} от Apple и что-то про "Invalid 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();
        }
    }

1 Ответ

0 голосов
/ 05 января 2012

Не нужно печенье, я думаю?попробуйте

HttpClientParams.setCookiePolicy(client.getParams(), CookiePolicy.IGNORE_COOKIES);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...