POST <URL> HTTP/1.0
  USER-Agent: <Client Application Name>
  Content-Type: application/x-fox
  Content-Length: nnnn  
  <?xml version=”1.0”?>
  <?FOX FOXHEADER=”100” VERSION=”100” SECURITY=”NONE” LANG=CHS?>
  <FOX>
  ...
  </FOX>现在要发送如上格式的xml数据,试过curl但不成功,大家帮帮忙

解决方案 »

  1.   

    CURL是可以的,但是参数设置比较麻烦。这种情况有一些现成的类库实现,提供一个简单的示例<?phpif( $_SERVER['REQUEST_METHOD'] === 'POST' ){
        // 接收
        $content = file_get_contents('php://input');
        $xml = simplexml_load_string($content);
        echo "来自XML接收方的响应\n";
        print_r( get_object_vars($xml) );
        exit;
    }// 发送行为
    $xml = <<<xml
    <?xml version="1.0"?>
    <FOX>
    <hello>world</hello>
    </FOX>
    xml;$setting = array(
        'http' => array(
        'method' => 'POST',
        'user_agent' => '<Client Application Name>',
        'header' => "Content-type: application/x-www-form-urlencoded",
        'content' => $xml
        )
    );
    $context = stream_context_create($setting);
    $url = 'http://localhost/'. $_SERVER['REQUEST_URI'];
    $response = file_get_contents($url, null, $context);echo $response;
    需要说明你的HTTP请求示例中,请求内容实体与报头需要相隔两组\r\n。另外你的XML文件格式不正确,而且标签属性里还包含全角符号
      

  2.   

    有用过fsockopen的吗?这个好像可以设置http报头