Код ошибки веб-интеграции FedEx 9004
Я пытаюсь интегрировать службы отслеживания FedEx в мое веб-приложение, и я получаю эту ошибку.
Серьезность: НЕИСПРАВНОСТЬ
Источник: prxy
Код: 9004
Сообщение: метод удаленного EJB: трек не вызван. Невозможно создать удаленный компонент. Исключение: javax.naming.NamingException: не удается найти основного представителя [Исключением root является javax.naming.NamingException: не удается найти основного представителя]. Причина: javax.naming.NamingException: не удается найти основного представителя [Исключением root является javax.naming.NamingException: не удается найти основного представителя]
Запрос
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP- ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://fedex.com/ws/track/v10"><SOAP-ENV:Body><ns1:TrackRequest> <ns1:WebAuthenticationDetail><ns1:ParentCredential><ns1:Key>#########</ns1:Key><ns1:Password>###########</ns1:Password></ns1:ParentCredential><ns1:UserCredential><ns1:Key>#############</ns1:Key><ns1:Password>###########</ns1:Password></ns1:UserCredential></ns1:WebAuthenticationDetail><ns1:ClientDetail><ns1:AccountNumber>#########</ns1:AccountNumber><ns1:MeterNumber>###########</ns1:MeterNumber></ns1:ClientDetail><ns1:TransactionDetail><ns1:CustomerTransactionId>*** Track using PHP ***</ns1:CustomerTransactionId></ns1:TransactionDetail><ns1:Version><ns1:ServiceId>trck</ns1:ServiceId><ns1:Major>10</ns1:Major><ns1:Intermediate>0</ns1:Intermediate><ns1:Minor>0</ns1:Minor></ns1:Version><ns1:SelectionDetails><ns1:PackageIdentifier> <ns1:Type>TRACKING_NUMBER_OR_DOORTAG</ns1:Type><ns1:Value>449044304137821</ns1:Value></ns1:PackageIdentifier><ns1:ShipmentAccountNumber>########</ns1:ShipmentAccountNumber> </ns1:SelectionDetails></ns1:TrackRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
отклик
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><TrackReply xmlns="http://fedex.com/ws/track/v10"><HighestSeverity>FAILURE</HighestSeverity><Notifications><Severity>FAILURE</Severity><Source>prxy</Source><Code>9004</Code><Message>Remote EJB method: track not called. Unable to create the remote bean. Exception: javax.naming.NamingException: unable to find primary representative [Root exception is javax.naming.NamingException: unable to find primary representative]. Cause: javax.naming.NamingException: unable to find primary representative [Root exception is javax.naming.NamingException: unable to find primary representative]</Message></Notifications></TrackReply></SOAP-ENV:Body></SOAP-ENV:Envelope>
Я использую инфраструктуру Laravel, и для интеграции с FedEx используются три файла: TrackService_v10.wsdl, который содержит данные XML, TrackWebServiceClient.php5, который содержит функции php для отправки запроса, и файл fedex-common.php5, который также содержит PHP-функции, содержащие вход для публикации.
Я пытался искать везде в Интернете и в Центре разработчиков и ресурсов на FedEx, но я действительно не могу заставить его работать. Я также не понимаю эти запросы SOAP. Кроме того, FedEx говорит, что у них нет программистов, которые могли бы мне помочь с этим. Может кто-нибудь, пожалуйста, помогите? Заранее спасибо.
2 ответа
У меня была точно такая же проблема. После того, как я часами стучал головой по столу, я наткнулся на этот пост - /questions/39223554/veb-servisyi-fedex-oshibka-9040-ne-udaetsya-otsledit-otslezhivanie/39223573#39223573. Он относится к v5 файла WSDL (текущее 10), но в основном вам нужно удалить "бета" из URL в строке 2296.
<service name="TrackService">
<port name="TrackServicePort" binding="ns:TrackServiceSoapBinding">
<s1:address location="https://wsbeta.fedex.com:443/web-services/track"/>
</port>
</service>
Должно быть
<service name="TrackService">
<port name="TrackServicePort" binding="ns:TrackServiceSoapBinding">
<s1:address location="https://ws.fedex.com:443/web-services/track"/>
</port>
</service>
И волшебным образом все будет (должно) начать работать. Надеюсь, это поможет вам так же, как и мне!
Удаление beta
кажется, больше не является хорошим решением.
Я связывался со службой поддержки FedEx, и проблема возникает, когда вы устанавливаете недопустимый "ParentCredentials".
В моем случае я должен использовать только "UserCredential", "ParentCredentials" был установлен в "XXX", если он пуст в примере (Java), предоставленном Fedex.