USPS API путаница - PullRequest
       21

USPS API путаница

1 голос
/ 20 августа 2009

Если у кого-то есть опыт использования API подтверждения доставки USPS, я был бы очень признателен за любую информацию, которую я могу получить ...

Я использую PHP и cURL для отправки запроса XML в API D.C. Когда я отправляю ответ через cURL, я ничего не получаю. Нет ответа об ошибке, нет XML или что-то еще. Когда я отправляю XML через браузер, я получаю ответ об ошибке, который является по крайней мере ответом. Я нахожусь в тупике, потому что ошибка, которую я получаю через браузер явно (согласно линии поддержки), означает, что их проблемы с сервером влияют на API. Однако я не знаю, почему я не смог бы получить этот ответ через cURL.

Ответы [ 2 ]

1 голос
/ 20 августа 2009

Мы используем API проверки адреса и .NET, а не подтверждение доставки и PHP, но, возможно, я могу помочь.

XML, который вы отправляете в почтовое отделение, должен быть частью строки запроса, подобной этой:

https://servername/ShippingAPITest.dll?API=DeliveryConfirmationV3&XML=<DeliveryConfirmationV3.0Request USERID="username">…….</DeliveryConfirmationV3.0Request>

Тогда они просто вернут вам документ XML. Я никогда не использовал библиотеку cURL, но, возможно, вы можете проверить, что это именно то, что она на самом деле отправляет.

Кроме того, вы уже были одобрены? Если нет, то они разрешают только стандартные ответы теста. Все остальное выдаст вам ошибку, даже если она будет действительна на рабочем сервере.

0 голосов
/ 20 августа 2009

Я подозреваю, что в структуре вашего запроса что-то не так (например, отсутствует заголовок), поскольку содержимое XML звучит так, как будто оно допустимо (или, по крайней мере, серверы USPS читают его правильно).

Наша реализация API USPS использует необработанное TCP / IP-соединение с fsockopen, что дает то преимущество, что я могу точно подтвердить, что мы отправляем в структуре запроса: POST /ShippingAPI.dll HTTP/1.0

Единственные заголовки, которые мы включаем в запрос, это:

User-Agent: (foo)\r\n
Host: (bar)\r\n
Content-Type: text/xml\r\n
Content-Length: strlen($xml)\r\n\r\n

Это соответствует тому, что вы отправляете через cURL?

...