首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送Post请求multipart/form-data

发送Post请求multipart/form-data
EN

Stack Overflow用户
提问于 2013-07-02 00:00:33
回答 2查看 1.3K关注 0票数 0

我在尝试发送Post请求并获取结果时遇到问题,以下是我的代码:

代码语言:javascript
复制
function connect2($hostname,$method,$path,$data,$cookie){
$fp=fsockopen($hostname, 80, $errno, $errstr, 30);
    if(!$fp) echo "$errstr($errno)<br>/>\n";
    else{
        $headers="$method $path HTTP/1.1\r\n";
        $headers.= "Host: $hostname\r\n";
        if($cookie) $headers.="Cookie: $cookie\r\n";
        if($method=="POST") $headers.="Content-length: ".strlen($data)."\r\n";
        if($method=="POST") $headers.="Content-Type: multipart/form-data;  boundary=---------------------------4358114262792\r\n";
        $headers.="Referer: http://ospb.dev.1adw.com/vt/houses/add\r\n";
        $headers.="Connection: keep-alive\r\n";
        if($method=="POST")$headers.="\r\n\$data\r\n";
        $headers.="\r\n";
        fwrite($fp, $headers);
        $line="";
        while(!feof($fp)){
            $line.=fgets($fp, 1024);
        }
        fclose($fp);
    }
    return $line ;

}
$data="-----------------------------4358114262792\r\n"
."Content-Disposition: form-data; name=\"action\"\r\n\r\n".
"add\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"selectedTab\"\r\n\r\n".
"0\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"house[officeId]\"\r\n\r\n".
"450\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"house[streetId]\"\r\n\r\n".
"968432\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"house[number]\"\r\n\r\n".
"20\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"house[building]\"\r\n\r\n".
"1\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"house[sourceUrl]\"\r\n\r\n".
"http://uk-sozidanie.ru/homes/\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"house[statusId]\"\r\n\r\n".
"1\r\n".
"-----------------------------4358114262792\r\n".
"Content-Disposition: form-data; name=\"__token\"\r\n\r\n".
"cfc3901629435\r\n".
"-----------------------------4358114262792--";
...
$b = connect2("ospb.dev.1adw.com", "POST", "/vt/houses/add", $data ,$cookie);

下面是错误:

代码语言:javascript
复制
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\cdo\www\add.php on line 46

我只是试图模拟一个真实的请求,它工作得很好,并且几乎可以立即返回好的结果。

补充:我是否正确计算了我的数据长度?

EN

回答 2

Stack Overflow用户

发布于 2013-07-02 00:02:10

在文件的顶部,在<?php标记之后,放入set_time_limit(0);表示无限的处理时间……或者使用更高的东西,比如120

票数 0
EN

Stack Overflow用户

发布于 2013-07-05 13:47:23

你应该在PHP中使用cURL函数来处理所有的HTTP/HTTP请求,这应该可以解决你的问题。

如果您不想使用cURL,请从您正在发送的实际请求中发布实际的请求/响应头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17408795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档