开发者社区> 问答> 正文

PHP用curl发送post请求

screenshot
PHP使用curl提交POST数据,为什么打印出curl_exec($ch)是400 Bad Request,求解答!

展开
收起
小旋风柴进 2016-03-10 11:27:14 3079 0
1 条回答
写回答
取消 提交回答
  • [php] view plain copy print?在CODE上查看代码片派生到我的代码片
    <?php    
      $ch = curl_init();    
      $timeout = 5;    
      curl_setopt ($ch, CURLOPT_URL, 'http://www.domain.com/');    
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);    
      curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);   
      curl_setopt($ch, CURLOPT_POST, 1 );//设置post请求  
      curl_setopt($ch, CURLOPT_HEADER, 0 ) ;  
      curl_setopt($ch,CURLOPT_POSTFIELDS, "param=".$param);//param为请求的参数  
      $file_contents = curl_exec($ch);    
      curl_close($ch);    
      echo $file_contents;  
    ?>  
      
    /** 
    *  
    * @Description 批量请求获得内容 
    * @param @param array $urls 
    * @param @param String $param 
    * @return String 
    */  
    public function remoteByRolling($urls, $param) {  
              
            if (! is_array ( $urls ) || count ( $urls ) == 0)  
            return false;  
        $queue = curl_multi_init ();  
        $map = array ();  
        foreach ( $urls as $url ) {  
            $this->remoteByPost ( $url, $param );  
            curl_multi_add_handle ( $queue, $this->ch );  
            $map [$url] = $this->$ch;  
        }  
              
        $active = null;  
        // 执行批处理句柄  
        do {  
            $mrc = curl_multi_exec ( $queue, $active );  
        } while ( $mrc == CURLM_CALL_MULTI_PERFORM );  
              
        while ( $active > 0 && $mrc == CURLM_OK ) {  
            //curl_multi_select:等待所有cURL批处理中的活动连接  
            if (curl_multi_select ( $queue, 0.5 ) != - 1) {  
                do {  
                    $mrc = curl_multi_exec ( $queue, $active );  
                } while ( $mrc == CURLM_CALL_MULTI_PERFORM );  
            }  
        }  
              
        /* get data */  
        $responses = array ();  
        foreach ( $map as $url => $ch ) {  
                  
            if (curl_error ( $ch ) == '') {  
                $responses [$url] = curl_multi_getcontent ( $ch ) ;  
            }else{  
                error_log("curl error");  
            }  
            curl_multi_remove_handle ( $queue, $ch );  
            curl_close ( $ch );  
        }  
    }  
    2019-07-17 18:57:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载