代码之家  ›  专栏  ›  技术社区  ›  KJW

哈德森:如何在一篇成功的文章之后发布这个xml?

  •  0
  • KJW  · 技术社区  · 14 年前

    我用firefox的Poster插件发送了一个xml帖子。这是从成功发布到hudson服务器中捕获的HTTP头。我正在尝试使用header()函数在php中复制此内容。

    POST /createItem?name=tellme HTTP/1.1
    Host: somewhere.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us,en;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Content-Type: text/xml
    Content-Length: 715
    Cookie: JSESSIONID=69b4cb38635ae490d357bb6b21372507
    Pragma: no-cache
    Cache-Control: no-cache
    <?xml version='1.0' encoding='UTF-8'?>
    <project>
      <actions/>
      <description></description>
      <keepDependencies>false</keepDependencies>
      <properties/>
      <scm class="hudson.scm.NullSCM"/>
      <canRoam>true</canRoam>
      <disabled>false</disabled>
      <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
      <triggers class="vector"/>
      <concurrentBuild>false</concurrentBuild>
      <builders>
        <hudson.tasks.Shell>
          <command></command>
        </hudson.tasks.Shell>
      </builders>
      <publishers/>
      <buildWrappers>
        <hudson.plugins.xvnc.Xvnc>
          <takeScreenshot>false</takeScreenshot>
        </hudson.plugins.xvnc.Xvnc>
      </buildWrappers>
    </project>
    

    这是我的php代码:

    <?php
    
    
    $data = file_get_contents("config.xml");
    
    $post_data = $data;
    $content_length = strlen($post_data);
    
    header('POST /createItem?name=friends HTTP/1.1');
    header('Host: somewhere.com');
    header('Keep-Alive: 115');
    header('Connection: keep-alive');
    header('Content-type: text/xml');
    header('Content-length: ' . trim($content_length));
    header($post_data);
    
    exit();
    

    php代码失败并抛出: Warning: Header may not contain more than a single header, new line detected. Line 18.

    1 回复  |  直到 14 年前
        1
  •  0
  •   webbiedave    14 年前

    使用后 curl

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $yourPostUrl);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // put your headers here
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)', 
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Language: en-us,en;q=0.5'
    ));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $yourXML);
    
    echo $response;
    curl_close($ch);