2017-12-27 26 views
-1

私のプライベートプロジェクトには、Webサイトからサービスを利用しています。だから私は、今日まで知っている何のためにxmlファイルでPHPリクエストを作成する

<Request Originator="xxxxx" Company="xxx"> 

    <Range Code="xx"> 

     <Item Id="xxxxxx-xxxxx-xxxxxx-xxx-7E8B94462F2C" /> 

    </Range> 

    <KeyValues> 

     <Translations> 

      <Language Value="de" /> 

      <Language Value="en" /> 

     </Translations> 

     <Regions Show="true" /> 

     <Towns Show="true" /> 

    </KeyValues> 

</Request> 

EDIT

は、私はこの1つのようなxmlファイルを持っている私は、このURLにリクエストを送信する1されていますhttp://interface.deskline.net/DSI/KeyValue.asmx?WSDL そのサーバーでは通信を行いますが、常にこのエラーメッセージが表示されます。

soap:ReceiverSystem.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1. at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read() at System.Xml.XmlReader.MoveToContent() at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement() at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest() at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) --- End of inner exception stack trace ---1 

私はそれがコミュニケーションを得ることはありません。

$url = 'http://interfacetest.deskline.net/DSI/KeyValue.asmx'; 


$content = 0; 
if (file_exists('/mm/request.xml')) { 
    $xml = fopen('/mm/request.xml', "r"); 
    $content = fread($xml,filesize("/mm/request.xml")); 
    fclose($xml); 
} else { 
    echo 'No file, no request'; 
} 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
// Following line is compulsary to add as it is: 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
    "xmlRequest=" . $content); 
$response = curl_exec($ch); 
echo $response; 

答えて

1

のDOMDocumentは、例えば、XML文書を操作するための素晴らしい作品:そしてここで私が書いたPHPコードの少ない

$domd=new DOMDocument(); 
$domd->formatOutput=true; 
$domd->loadXML($str,LIBXML_NOBLANKS); 
$rangeele=$domd->getElementsByTagName("Range")->item(0); 
for($i=0;$i<5;++$i){ 
    $tmp=$domd->createElement("Item"); 
    $tmp->setAttribute("Id",$i); 
    $rangeele->appendChild($tmp); 
} 
var_dump($domd->saveXML()); 

出力

... 
    <Range Code="xx"> 
    <Item Id="xxxxxx-xxxxx-xxxxxx-xxx-7E8B94462F2C"/> 
    <Item Id="0"/> 
    <Item Id="1"/> 
    <Item Id="2"/> 
    <Item Id="3"/> 
    <Item Id="4"/> 
    </Range> 
... 

引用how can I set up the communication between my server and theirs with php - そのサーバーがサポートしているものに応じて、いくつかの方法で行うことができます。最も一般的な方法は、

$ch=curl_init('http://example.org/api'); 
curl_setopt_array($ch,array(CURLOPT_POST=>1,CURLOPT_HTTPHEADER=>array('Content-Type: application/xml'),CURLOPT_POSTFIELDS=>$xml)); 
curl_exec($ch); 
curl_close($ch); 

別の人気のように行うことができ、(ところで、あなたのウェブブラウザは、主にstackoverflow.comのウェブサイトとの通信に使用するのと同じプロトコルである)、HTTPプロトコルを介して通信することですこの方法は、あまりにも他のプロトコルの多く、OFC(and curl supports a great deal of them)がある

$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
socket_connect($sock,"example.org",1337); 
socket_write($socket,$xml); 
socket_close($sock); 

のように行うことができます(HTTPプロトコルは、上に構築されている)TCPプロトコルを使用することですが、これらは最もあり一般的なもの。再び、それは実際にターゲットサーバがサポートしているものに依存しています。私たちは知らないので、あなたが通信したいと思う人に尋ねます。

(上記の例では、エラーチェックも省略していますが、あなたの質問は単に広すぎて細部が不足しているため投票を中止して投票しました。 I am trying for 2 hours to get this working but no luck.よく、何を試しましたか?どのように失敗しましたか)

関連する問題