Проблемы с Visual Basic 6.0 и MagentoSoap - PullRequest
0 голосов
/ 28 октября 2011

с некоторых пор я работаю над созданием инструмента в Visual Basic 6, который может «общаться» с magento-Soap-Inferface.

Я использую следующие версии: - Magento в версии 1.5.0.0 - Microsoft Soap Tookit 3.0 для Visual Basic 6

кодирование в VB, как здесь:

Private Sub Command1_Click()
  Dim paramstring As String
  Dim soapClient, sessionID
  Dim attributeSets() As returnData

  Set soapClient = CreateObject("MSSOAP.SoapClient30")   
  soapClient.MSSoapInit "http://localhost/magento/index.php/api/soap/?wsdl"
  sessionID = soapClient.login("dede", "1q2w3e4r5t6y7u")
  attributeSets = soapClient.call(sessionID, "product_attribute_set.list", 0)    
End Sub

я запущен и ошибка

Ошибка времени выполнения '-2147467259 (80004004) SoapMapper: определение схемы с целевым пространством имен http://xml.apache.org/xml-soap для контура карты SoapMapper не найдено HRESULT = 0x80004005: ошибка не указана - Soap Mapper: не удалось создать отображение для элемента массиватипа Map в пространстве имен http://xml.apache.org/xml-soap. HRESULT = 0x80004005: неуказанная ошибка - SoapMapper: восстановление данных в SoapMapper anyType Failed.

Как я уже говорил, проблема возникает только тогда, когда я возвращаюсьanyType или fixedArray.

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 29 октября 2011

Это говорит о том, что схема запроса xml не соответствует ожидаемой. Не нужен прокси ком

вот пример

Добавить ссылку на Microsoft Xml версии 2.0 или выше

Проверьте этот метод

 Public Function PostRequest(urlService As String, soapAction As String, xmlRequest As String) As String

   Dim oHttReq  As XMLHTTPRequest
   Dim Log      As Logger
   Dim w        As w32
   Dim filepath As String
   Dim response As String

   Set oHttReq = New XMLHTTPRequest

   oHttReq.open "POST", urlService, False
   oHttReq.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
   oHttReq.setRequestHeader "SOAPAction", soapAction
   oHttReq.send xmlRequest       

   PostRequest = oHttReq.responseText

   If Not oHttReq Is Nothing Then
     Set oHttReq = Nothing
   End If       

 End Function

в сервисе url укажите URL веб-сервиса asmx: как-то http://myserver/serviceinterface/serviceinterface.asmx

в действии мыла сначала применил исправленный к какому-либо методу в вашем сервисе, а затем просмотрите определение. В том, что существует тег вызова SoapAction, несколько как SOAPAction: "http://localhost/commonxmlschemas/technology/createcharge" (только пример)

Вы также видите запрос на мыло

 POST /myserver/serviceinterface/serviceinterface.asmx HTTP/1.1
 Host: myserver
 Content-Type: text/xml; charset=utf-8
 Content-Length: length
 SOAPAction: "http://localhost/commonxmlschemas/technology/createcharge"

 <?xml version="1.0" encoding="utf-8"?>
 <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header>
     <RequestHeader xmlns="http://localhost/commonxmlschemas/technology/">
       <Headers>
         <anyType />
         <anyType />
       </Headers>
     </RequestHeader>
   </soap:Header>
   <soap:Body>
     <createcharge xmlns="http://localhost/commonxmlschemas/technology/">
       <chargeRequest xmlns="http://localhost/commonxmlschemas/technology/chargeRequest.xsd">
         <charge>
           <creditcard xmlns="http://localhost/commonxmlschemas/technology/Charge.xsd">string</creditcard>
           <amount xmlns="http://localhost/commonxmlschemas/technology/Charge.xsd">int</amount>
         </charge>
         <Tag>string</Tag>
       </chargeRequest>
     </createcharge>
   </soap:Body>
 </soap:Envelope>

копия с

  <?xml to </soap:Envelope> 

теперь этот параметр xmlRequest заполняет только параметры этого xmlRequest и отправляет его в метод PostRequest

просто, нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...