Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当第一个响应在php中不被接受时,如何继续请求?_Php_Laravel 5_Guzzle6 - Fatal编程技术网

当第一个响应在php中不被接受时,如何继续请求?

当第一个响应在php中不被接受时,如何继续请求?,php,laravel-5,guzzle6,Php,Laravel 5,Guzzle6,我是使用Guzzle软件包的新手,我想通过web api发送数据,当响应状态为OK或NOT时,我执行一些操作,否则状态为equal等待5秒后再次请求,或状态为equal未睡眠30秒。 这是我的密码 $client = new Client(); $headers= [ 'Accept' => 'application/x-www-form-urlencoded', 'Content-Type' => 'application/x-w

我是使用Guzzle软件包的新手,我想通过web api发送数据,当响应状态为OK或NOT时,我执行一些操作,否则状态为equal等待5秒后再次请求,或状态为equal未睡眠30秒。 这是我的密码

$client = new Client();
  $headers= [
            'Accept' => 'application/x-www-form-urlencoded',
            'Content-Type' => 'application/x-www-form-urlencoded',
        ];
        $body = [
            'phone2'=>'723457481',
            'amount'=>'200'
        ];
        $url = "http://192.168.31.51:8080/requesttrafic/";

       $response = $client->Request("POST", $url, [
            'handler'  => $stack,
            'headers'=>$headers,
            'form_params'=>$body
        ]);
        $contents = (string) $response->getBody();
       // this $contents can be  status 'ok','not' anything
那么,如何根据响应状态再次发送?
谢谢

如果您想在状态为“ok”时再次发送,则:

if($contents!=='ok'){
    $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
}
如果“状态”指的是http状态,则可以通过以下方式验证:

$status = $response->getStatusCode();
if($status!==200){
 //your request again
}

也许我理解错了你的问题。在这种情况下,请详细说明。

如果您想在状态为“ok”时再次发送,则:

if($contents!=='ok'){
    $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
}
 $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
if($contents!=='ok'){
    $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
if($contents!=='ok'){
    $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
}else{
  exit;
}
}
如果“状态”指的是http状态,则可以通过以下方式验证:

$status = $response->getStatusCode();
if($status!==200){
 //your request again
}

也许我理解错了你的问题。在这种情况下,请详细说明。

此答案缺少一些参数$contents是响应数据。@jdamour,我已经编辑了我的答案,可能这就是您要查找的。这是我现在使用的逻辑,多if语句和sleep()function@jdamour,那就完美了,如果您的问题已得到解决,请将答案标记为已接受,以关闭stackoverflow上的此线程。此答案缺少某些参数$contents是响应数据。@jdamour,我已编辑了我的答案,可能这就是您要查找的。这是我现在使用的逻辑multiple if语句和sleep()function@jdamour,那就完美了,如果你的问题已经解决,那么请将答案标记为已接受以关闭stackoverflow上的此线程。我已编辑了我的答案,可能这就是你正在寻找的答案。完美的话,如果你的问题已经解决,那么请将答案标记为已接受以关闭stackoverflow上的此线程我已编辑了我的答案,也许这就是你正在寻找的。完美的话,如果你的问题已经解决了,那么请在stackoverflow上标记接受的答案来关闭这个线程
 $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
if($contents!=='ok'){
    $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
if($contents!=='ok'){
    $response = $client->Request("POST", $url, [
        'handler'  => $stack,
        'headers'=>$headers,
        'form_params'=>$body
    ]);
    $contents = (string) $response->getBody();
}else{
  exit;
}
}