依赖于我所连接的网络,耗时请求失败,

时间:2019-07-08 02:54:02

标签: guzzle

我正在用食尸鬼向我的子域api.domain.com发出请求。 在同一手机热点上。当我在家时,我的耗时请求需要有www.api.domain.com,但在附近任何需要工作的地方,它都需要api.domain.com并以www失败。我不知道为什么,这正在发生。

这是我的代码。有时它会像这样正常工作。

$client = new GuzzleHttp\Client([
         'base_uri' => 'https://api.domain.com',
         'timeout'  => 10

     ]);

在我的控制器中

 $get = $this->client->request('GET','/dashboard', [
            'timeout' => 0,
            'headers'=>[
            ],
            'form_params'=> ['param'=>$param]
          ]);

但是当我更改位置时,它不起作用。我需要通过添加www

对其进行修改
$client = new GuzzleHttp\Client([
         'base_uri' => 'https://www.api.domain.com',
         'timeout'  => 10

     ]);

我的控制器保持不变并且有效

 $get = $this->client->request('GET','/dashboard', [
            'timeout' => 0,
            'headers'=>[
            ],
            'form_params'=> ['param'=>$param]
          ]);

我遇到一个令人讨厌的错误6

我的.htaccess在我的api中看起来像这样。我对htaccess不太了解,所以如果我犯了一个错误,请纠正我。

  RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
  RewriteRule ^(.*) - [E=BASE:%1]

  RewriteCond %{HTTP:Authorization} ^(.*)
  RewriteRule .* - [e=Authorization:%1]

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]

  RewriteCond %{HTTPS} off [OR]
  RewriteCond %{HTTP_HOST} ^www\.api.domain\.com [NC]
  RewriteRule (.*) https://api.domain.com/$1 [L,R=301]

2 个答案:

答案 0 :(得分:0)

禁用验证SSL

class APIPostRequest {
    Future<String> apiRequest(String url, Map jsonMap) async {
        HttpClient httpClient = new HttpClient();
        HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));
        request.headers.set('Accept', 'application/json');
        request.headers.set('Content-type', 'application/json');
        request.headers
            .set('Authorization', "Bearer " + UserConstants.userAccessToken);
        request.add(utf8.encode(json.encode(jsonMap)));
        HttpClientResponse response = await request.close();
        String reply = await utf8.decoder.bind(response).join();
        httpClient.close();
        return reply;
    }
}

您尝试过吗?

答案 1 :(得分:0)

最终,这是该公司制造的服务器配置中的一个问题。 很抱歉困扰您这个问题。