我自己编写了一个REST API,它使用了另一个REST API。使用REST API时的400_Bad_Request - 随机并持续数小时?
它经常起作用,但它也经常导致400_Bad_Request。
流程是这样的:它工作,工作,工作了很长时间,然后它不工作,不工作,并且不能工作很长时间。然后我休息一小时或两小时后再次运作。 无论我使用什么浏览器 - 铬或火狐(但我确实尝试清除缓存)。如果我直接在浏览器中输入URL(我试图在我的Web服务中使用该URL),那么我会得到正确的响应,所以它不像他们阻止我的IP地址一段时间。
public function apiFunction()
{
parse_str($_SERVER["QUERY_STRING"]);
$host = "THE API ADDRESS"; //omitted due to privacy
$tran = new apiCallClass("username", "pwd"); //omitted due to privacy
$tran->setSomeData($var1, $var2, $var3);
$tran->setSomeRequest($var4, $var5);
$tran->setSomeField("somevar", $var6);
$tran->setHost($host);
$tran->execute();
parse_str($tran->ResponseRaw,$theArr);
//... other code goes here,
//but I can already see ResponseRaw has 400_Bad_Request
}
这是可能是问题的根源功能:如果我复制$ url的值,并将其粘贴到浏览器中,它的工作原理,所以它必须是东西,这个功能是这样做是错的:
function processRequest($url)
{
$temp = $url;
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_FRESH_CONNECT,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_HEADER, 0);
if (!$this->isBlank($this->ProxyHost))
{
curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt ($ch, CURLOPT_PROXY,$this->ProxyHost);
} curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE);
$this->parseResponse(curl_exec($ch));
}
apiFunction的哪些部分可能是基于时间的?或者它的哪一部分可能会在一小时和一小时之间发生显着变化? – 2013-04-07 07:57:50
@TashPemhiwa其实没有。另外,我直接在浏览器请求中传递相同的参数,并且很好。 – user1831003 2013-04-07 08:24:24
也许你有间谍软件或拦截你的请求? – 2013-04-07 09:05:09