Navision Webサービスにコマンドを送信しようとしています。できるだけ全体の接続を理解するために、最初に単純なcURLコマンドを使用したいと考えています。Navision SOAPサービスへのコマンドの送信
私は簡単なGETリクエストをURL https://IP:PORT/.../Codeunit/Webservices
で試してみました。そこには、すべてのコマンドを含む非常に長いXML構造があります。リストの一部は簡単なエコーコマンドで、ここで文字列を送信して戻すことができます。
これはそれのdiscriptionです:
<schema elementFormDefault="qualified" targetNamespace="urn:microsoft-dynamics-schemas/codeunit/Webservices" xmlns="http://www.w3.org/2001/XMLSchema">
<element name="SoundCheck">
<complexType>
<sequence>
<element minOccurs="1" maxOccurs="1" name="p_Text" type="string"/>
</sequence>
</complexType>
</element>
<element name="SoundCheck_Result">
<complexType>
<sequence>
<element minOccurs="1" maxOccurs="1" name="return_value" type="string"/>
</sequence>
</complexType>
</element>
...
今私の問題は、私は、コマンドを送信する方法がわからないということです。
- https://github.com/jamesiarmes/php-ntlm
- https://github.com/rileydutton/Exchange-Web-Services-for-PHP
私は彼らのapproches何も作品を試してみました:私はこれらの二つの特別なSOAPライブラリに見えました。私のコードスニペットは、次のようになります。
$headers = [
'Method: GET',
'Connection: Keep-Alive',
'User-Agent: PHP-SOAP-CURL',
'Content-Type: text/xml; charset=utf-8',
'SOAPAction: "' . $action . '"',
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
return $response;
私は$action
の様々な値を送信しようとしたが、私はいつもこのエラーが出る:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault>
<faultcode xmlns:a="urn:microsoft-dynamics-schemas/error">a:System.ArgumentNullParametername: input</faultstring>
<detail><string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Der Wert darf nicht NULL sein.\nParametername: input</string></detail>
</s:Fault></s:Body></s:Envelope>
は、たぶん私はNavisionのと全体のSOAPプロセスを誤解するだけでなく、Iウェブ上に本当に良いチュートリアルは見つかりませんでした。私は間違って何をしていますか?手伝ってくれてありがとう!