XML データを処理のためにリモート サーバーに POST する必要があります。サーバー プロトコルは既に定義されており、変更できません。投稿したい XML データは、ローカル サーバーで実行されている PHP ページ内で動的に生成されます。ユーザーがその XML データをファイルに保存してから、そのファイルを参照してリモート サーバーにアップロードする必要はありません (これはユーザー フレンドリーでも無意味でもありません)。私の質問は、PHP 関数を使用してこれを行う方法です (「input file=」フィールドを使用して HTML フォームをコーディングすることで実行できますが、これはユーザーがファイルを参照する必要があることを意味します)。例が与えられました。必要なのは、例のヘッダーを正確に再現し、それをリモート サーバーに送信する PHP コードを作成することです。私を助ける手がかりはありますか?
POST http://doi.crossref.org/servlet/deposit? operation=doMDUpload&login_id=USER&login_passwd=PSWD&area=live HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: en-us Content-Type: multipart/form-data; boundary=---------------------------7d22911b10028e
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)
Host: Myhost
Content-length: 1304 Pragma: no-cache -----------------------------7d22911b10028e
Content-Disposition: form-data; name="fname"; filename="crossref_query.xml"
<?xml version="1.0" encoding="UTF-8"?>
.....XML data....
-----------------------------7d22911b10028e--
私が試したものの成功しませんでした: XML データのフォームと input=hidden フィールド (POST されたデータにはファイル名が含まれていないため、リモート サーバーによって拒否されます)。http_post_data() - リモート サーバーで内部サーバー エラーが発生しました。fopensocketを使用した後、データストリームをハンドコーディングし、ポート80ソケットを介して送信します-送信したストリームをtcpdumpを使用して1文字ずつチェックした後でも、サーバーはストリームにPOSTされたフォームデータが含まれていることを認識しませんでした。お分かりのように、私は必死になっています!