2013-08-21 1 views
3

Я пытаюсь сделать запрос, чтобы получить объекты SyncStatus, которые потерпели неудачу. В API-интерфейсе API вы должны выбрать опцию меню «Состояние», чтобы проверить это и отправить запросы на https: /// sb/STATUS/v2 /, даже если ответ XML относится к нему как SyncStatus ... поэтому не действительно уверен, что это нужно назвать точно.404, запрашивающий SyncStatus ... a.k.a. Состояние

Но это не моя проблема. Моя проблема в том, что когда я отправляю запрос (подробности ниже), я получаю ошибку 404. Он отлично работает в API Explorer, с тем же самым XML в теле. Я все время звоню в API, поэтому я знаю, что моя инфраструктура работает.

Помощь?

ЗАПРОС HEADERS

Content-Length: 322 
Authorization: 
OAuth 
oauth_consumer_key="KEY", 
oauth_nonce="NONCE", 
oauth_signature="SIG", 
oauth_signature_method="HMAC-SHA1", 
oauth_timestamp="1377117362", 
oauth_token="TOKEN", 
oauth_version="1.0" 
Content-Type: text/xml 
Host: services.intuit.com 
Connection: Keep-Alive 

ЗАПРОС ТЕЛА

<?xml version="1.0" encoding="UTF-8" standalone="no" ?><SyncStatusRequest ErroredObjectsOnly="true" xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intuit.com/sb/cdm/xmlrequest RestDataFilter.xsd"><OfferingId>ipp</OfferingId></SyncStatusRequest> 

РЕАКЦИЯ (с некоторыми новыми линиями добавлены для читаемости)

<html><head><title>JBoss Web/2.1.12.GA-patch-03 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head> 
<body> 
<h1>HTTP Status 404 - Null subresource for path: https://internal.services.intuit.com/sb/status/v2/725079435</h1> 
<HR size="1" noshade="noshade"> 
<p> 
<b>type</b> 
Status report</p><p><b>message</b> <u>Null subresource for path: https://internal.services.intuit.com/sb/status/v2/725079435</u> 
</p><p> 
<b>description</b> 
<u>The requested resource (Null subresource for path: https://internal.services.intuit.com/sb/status/v2/725079435) is not available.</u> 
</p> 
<HR size="1" noshade="noshade"> 
<h3>JBoss Web/2.1.12.GA-patch-03</h3> 
</body></html> 

EDIT: Я понял, что я использую GET вместо ПОСТ. Я установил, но теперь я получаю другую ошибку в ответе:

NEW РЕАКЦИЯ (новые линии добавлены для удобства чтения):

<?xml version="1.0" ?> 
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2"> 
<Error RequestId="347b6e52b653439493b57db68250b61a"> 
<RequestName>ErrorRequest</RequestName> 
<ProcessedTime>2013-08-21T21:57:50.693Z</ProcessedTime> 
<ErrorCode>-2001</ErrorCode> 
<ErrorDesc>Premature end of file.</ErrorDesc> 
</Error> 
</RestResponse> 
+0

Я НЕ должен послать либо из тех вещей, при использовании API Explorer, хотя. Посмотрите на первое сообщение, о котором упоминается Mana ниже, просто пустой тег без упоминания идентификаторов или типов вообще. Когда я запускаю этот запрос в API Explorer, он дает мне список ВСЕХ ошибок объектов, независимо от типа. Это то, что я хочу получить в своем приложении. –

+0

Фактически, в ссылке, которую вы мне дали, в ней конкретно говорится, что я могу сделать запрос для SyncStatus с этим телом: , который даст мне список всех объектов с ошибками. Я что-то упускаю? –

+0

ОК, я по-прежнему ценю ваше внимание к проблеме, мне было трудно получить какое-либо реальное разрешение проблем, которые у меня есть с API. Есть ли у вас какое-либо представление о ошибке «Преждевременный конец файла»? –

ответ

3

Просто сейчас я попробовал то же самое, используя DevKit. Я разделяю конечную точку и тело сообщения. Пожалуйста, попробуйте и сообщите мне, если это сработает и для вас.

Обязательный заголовок

Content-Type: text/xml 

Post Body

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<SyncStatusRequest ErroredObjectsOnly="true" xmlns="http://www.intuit.com/sb/cdm/v2"/> 

Другой Post Body (когда я прохожу любой Id)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<SyncStatusRequest ErroredObjectsOnly="true" xmlns="http://www.intuit.com/sb/cdm/v2"> 
    <NgIdSet> 
     <NgId>660607</NgId> 
     <NgObjectType>Customer</NgObjectType> 
    </NgIdSet> 
</SyncStatusRequest> 

Endpoint

https://services.intuit.com/sb/status/v2/657117515 

Java Code

public void testSyncStatus(String id) { 
    QBSyncStatusRequest syncStatusRequest = QBObjectFactory.getQBObject(
      context, QBSyncStatusRequest.class); 
    syncStatusRequest.setErroredObjectsOnly(true); 
    NgIdSet ngIdSet = new NgIdSet(); 
    ngIdSet.setNgId(id); 
    ngIdSet.setNgObjectType(ObjectName.CUSTOMER); 
    List<NgIdSet> idSets = new ArrayList<NgIdSet>(); 
    idSets.add(ngIdSet); 
    syncStatusRequest.setNgIdSet(idSets); 
    logger.debug("inside testSyncStatus"); 

    try { 
     QBSyncStatusRequestService service = QBServiceFactory.getService(
       context, QBSyncStatusRequestService.class); 
     List<QBSyncStatusResponse> response = service.getSyncStatus(
       context, syncStatusRequest); 
     System.out.println(response); 
     Iterator<QBSyncStatusResponse> iterator = response.iterator(); 

     while (iterator.hasNext()) { 
      QBSyncStatusResponse each = (QBSyncStatusResponse) iterator 
        .next(); 
      System.out.println(" Message Code - " + each.getMessageCode() 
        + " Message Desc - " + each.getMessageDesc()); 
     } 
    } catch (QBInvalidContextException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Благодаря

+0

Ну, ты помог мне разобраться в моих проблемах. Я использовал GET, а не POST. Однако сейчас у меня другая ошибка. См. Мои изменения в исходном вопросе. –

+0

Кстати, я получаю тот же самый преждевременный конец ошибки файла, когда я пытаюсь использовать любую версию вашего тела сообщения, как пустой тег SyncStatusRequest, так и те, у которых есть идентификатор (с использованием идентификатора, который действительно находится в моем ответе, когда я использую API Explorer) –

+0

Если возможно, вы можете поделиться своим кодом. Я не могу воспроизвести эту ошибку. спасибо –

Смежные вопросы