Intuit API V3 создать клиента не удается

Я использую IPP Java QBO ApiV3. Я могу читать и запрашивать клиентов через API Explorer, IPP Playground и мое приложение Java.

Я не могу создать клиента (или обновить существующего) с помощью IPP Playground и моего приложения Java. Тем не менее, я могу создавать и обновлять через API Explorer. Меня смущает, что я получаю разные ошибки в IPP Playground (500 - Внутренняя ошибка сервера.) И в приложении Java (сообщение = Исключительная аутентификация OAuth; errorCode=003200).

Часть аутентификации такая же, как в методе, который читает Customer. Кроме того, я прикрепляю к запросу только тело запроса (как в API Explorer).

Java-код:

OAuthConsumer consumer = new DefaultOAuthConsumer(consumerKey, consumerSecret);
consumer.setTokenWithSecret(accessToken, accessTokenSecret);

String signedUrl = consumer.sign(custUrl);
URL url = new URL(signedUrl);

String requestBody = " <Customer xmlns=\"http://schema.intuit.com/finance/v3\" domain=\"QBO\" sparse=\"false\">"+
                     "    <FamilyName>Customer Two</FamilyName>"+
                     "    <DisplayName>Second Customer</DisplayName>"
                     " </Customer>";

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
// add Request Header
urlConn.setRequestMethod("POST");
urlConn.setRequestProperty("Content-type", "application/xml");
urlConn.setRequestProperty("Content-Length", Integer.toString(requestBody.getBytes().length));
urlConn.setRequestProperty("Host", "qb.sbfinance.intuit.com");
urlConn.setRequestProperty("Accept-Encoding", "gzip,deflat");
urlConn.setRequestProperty("charset", "utf-8");

OutputStreamWriter wr = new OutputStreamWriter(urlConn.getOutputStream());
wr.write(requestBody);
wr.flush();
wr.close();

Есть идеи, как решить эту проблему?

1 ответ

Решение

Все эти проблемы уже решены JAVA devkit.

https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits

https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0201_ipp_java_devkit_3.0/0001_synchronous_calls/0001_data_service_apis

Повторно - ваш код Accept должен быть 'application/xml'

Но devkit - это всегда рекомендуемый подход.

Спасибо

Другие вопросы по тегам