2009-06-15 20 views
1

私は簡単なPHPコードを使用して、URLにXML文書を投稿します。xml投稿

私はjavascriptコードを持っていますが、javascriptはクロスドメインをサポートしていないので、私はちょうどphpでそれをしたいと思います。

いずれかが、これは私をサポートするためのコードを持っているん...

+0

彼はbaaaakです!!!!!!!! – Shoban

+0

これは良いことではありません、その方法は、あなたが私を助けたいとは思わない、いくつかの1つを助ける方法は、そのようなコメントを与える –

答えて

1

はPHPでHTTPメッセージを処理PECL HTTP classesを使用して非常に簡単です。

HTTP request(クライアント - >サーバーメッセージ)を発行したいとします。ありがたいことに、HttpRequest::setPostFilesは、ファイルコンテンツをHTTPリクエストに含めるプロセスを簡素化します。詳細については、PHPのマニュアルページ(前のリンク)を参照してください。

残念ながらHTTPクラスのマニュアルページは詳細にまばらであり、それはHttpRequest::setPostFilesの引数がどうあるべきか、完全に明確ではありませんが、次のコードは、あなたが始める必要があります。

$request = new HttpRequest(HttpMessage::HTTP_METH_POST); 
$request->setPostFiles(array($file)); 

$response = $request->send(); // $response should be an HttpMessage object 

マニュアル用HttpRequest::setPostFilesは、このメソッドの単一の引数は投稿するファイルの配列であると述べています。これは不明で、ローカルファイル名の配列、ファイルハンドルの配列、ファイル内容の配列を意味する場合があります。どちらが正しいか把握するのに時間がかかるはずはありません。

0

ストリームを使用し、PECLに依存しない例を示します。

// Simulate server side 
if (isset($_GET['req'])) { 
    echo htmlspecialchars($_POST['data']); 
    exit(); 
} 

/** 
* Found at: http://netevil.org/blog/2006/nov/http-post-from-php-without-curl 
*/ 
function do_post_request($url, $data, $optional_headers = null) 
{ 
    $params = array('http' => array('method' => 'POST', 
            'content' => $data)); 

    if ($optional_headers !== null) { 
     $params['http']['header'] = $optional_headers; 
    } 
    $ctx = stream_context_create($params); 
    $fp = @fopen($url, 'rb', false, $ctx); 
    if (!$fp) { 
     throw new Exception("Problem with $url, $php_errormsg"); 
    } 
    $response = @stream_get_contents($fp); 
    if ($response === false) { 
     throw new Exception("Problem reading data from $url, $php_errormsg"); 
    } 
    return $response; 
} 

// Example taken from: http://en.wikipedia.org/wiki/XML 
// (Of course, this should be filled with content from an external file using 
// file_get_contents() or something) 
$xml_data = <<<EOF 
<?xml version="1.0" encoding='ISO-8859-1'?> 
<painting> 
    <img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/> 
    <caption>This is Raphael's "Foligno" Madonna, painted 
      in <date>1511</date>-<date>1512</date>.</caption> 
</painting> 
EOF; 

// Request is sent to self (same file) to keep all data 
// for the example in one file 
$ret = do_post_request(
    'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . '?req', 
    'data=' . urlencode($xml_data)); 

echo $ret;