xmlデータをAPIに投稿し、curlを使う必要があります。これはコマンドラインのカールであり、少なくともPHPやlibcurlではカールしません。投稿する一般的なファイルからAPIに符号化されたデータを投稿するためにカールを使用する
XMLは次のようなものになります。
<SearchRequest>
<LoginDetails>
<Login>******</Login>
<Password>******</Password>
<Locale></Locale>
<AgentReference></AgentReference>
</LoginDetails>
<SearchDetails>
<ArrivalDate>2016-08-01</ArrivalDate>
<Duration>2</Duration>
<RegionID>279</RegionID>
<MealBasisID>0</MealBasisID>
<MinStarRating>0</MinStarRating>
<ContractSpecialOfferID>0</ContractSpecialOfferID>
<RoomRequests>
<RoomRequest>
<Adults>2</Adults>
<Children>0</Children>
<Infants>0</Infants>
</RoomRequest>
</RoomRequests>
</SearchDetails>
</SearchRequest>
をしかし、それは符号化された形式で掲載されます。
仕様によると、完全な要求は、この例のようになります。
HTTPポスト例
POST /xml/book.aspx HTTP/1.1
Content-Type application/x-www-form-urlencoded
Host servername-xml-test.somedomain.co.uk
Content-Length 331
Expect 100-continue
Proxy-Connection Keep-Alive
Data=%3CSearchRequest%3E%0D%0A%20%20%3CLoginDetails%3E%0D%0A%20%20%20%20%3CLog
in%3E%3C%2FLogin...cutting out all that encoded xml here... %3C%2FSearchRequest%3E
だから、基本的に、私はに投稿するURLやポストへの実際のXMLでてきたもの(コード化されておらず、改行なしで)
私は(サーバーが私の到達範囲外であるとサポートは、私がいつも言うことができないので、正確に何のエラーが非常に遅いです)のみエラーがサーバー側に発生して次のことを試してみた:
curl --header "Content-Type:application/x-www-form-urlencoded" \
--header "Proxy-Connection:Keep-Alive" \
-X POST \
--data-binary "[email protected]" \
https://server-and-domain/xml/book.aspx
これは、システムを返します。 。例外。私が " - データ - バイナリ"を " - データ"にすることができるのと同じことです。
私も試してみた:
curl --header "Content-Type:application/x-www-form-urlencoded" \
--header "Proxy-Connection:Keep-Alive" \
-X POST \
--form "[email protected]" \
https://server-and-domain/xml/book.aspx
これは、はるかに複雑なエラー(あなたは.NETの詳細なエラーをオフにしていない場合、あなたが得るもの)のように見える何かを返します。だから、私はこの要求は、サーバーが期待しているものからかなり離れていると思います。
同じことが--form "[email protected]"
になります(ただし、私がする必要がない場合は、手動でファイルを手動でエンコードする必要はありません)。
私の回避策 私は、回避策を持っている:「myfile.txtの」に私は「データ=」先行を追加し、私はちょうどURLにASCIIまたはバイナリデータのようにそれを投稿してください。
curl --header "Content-Type:application/x-www-form-urlencoded" \
--header "Proxy-Connection:Keep-Alive" \
-X POST \
--data-binary "@myfile.txt" \
https://server-and-domain/xml/book.aspx
は、しかし、私はこれを行うには有するが、先行するパラメータ名から自由「myfile.txtの」を維持し、私はこれが私のために処理することができる必要がありカール何かであることを推測している好まないでしょうか?
これを行うと、私は「悪い部分」になります。私が実際にやっているのは、 '--F" Data = @ $ {filename} "'パラメータの名前を "Data" – Jensd