【问题标题】:Laravel 5.7 : How to make JSON post request in guzzle?Laravel 5.7:如何在 guzzle 中发出 JSON 发布请求?
【发布时间】:2019-05-31 14:52:24
【问题描述】:

这是我的代码,我想在 Geoserver 中创建一个新商店

 public function post_store(String $name) {

      $client = new Client();
     $res = $client->request('POST', 'http://localhost:8080/geoserver/rest/workspaces/' . $name . '/datastores', [
         'auth' => ['admin', 'geoserver'],
         'json' => [
             'dataStore' => [
                 'name' => $name,
                 'connectionParameter' => [
                     'entry' => [
                         '@key' => 'host', '$' => 'localhost',
                         '@key' => 'port', '$' => 5432,
                         '@key' => 'database', '$' => 'nyc',
                         '@key' => 'user', '$' => 'shee',
                         '@key' => 'passwd', '$' => 'postgres',
                         '@key' => 'dbtype', '$' => 'postgis',
                     ]
                 ]
             ]
         ] 

     ]);
 }

结果是错误

   Server error: `POST http://localhost:8080/geoserver/rest/workspaces/pertanian/datastores` resulted in a `500 Server Error` response: <html> <head> <meta http- equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>Error 500 
   Server Error</title> (truncated...)

但我已经尝试使用 JSON 代码使用 POSTMAN:

  {
 "dataStore": {
   "name": "nyc",
   "connectionParameters": {
     "entry": [
       {"@key":"host","$":"localhost"},
       {"@key":"port","$":"5432"},
       {"@key":"database","$":"nyc"},
       {"@key":"user","$":"shee"},
       {"@key":"passwd","$":"postgres"},
       {"@key":"dbtype","$":"postgis"}
     ]
   }
 }
  }

而且它有效。

有人可以帮助我吗?我应该如何处理我的代码? ._. 之前谢谢你

【问题讨论】:

  • 您在请求正文中使用了connectionParameter 而不是connectionParameters
  • 你可能需要检查你是否有正确的参数并且你做对了。
  • 如果有请添加来自服务器的错误响应。它返回 500 错误,但看起来消息已被截断。
  • 我已经检查了参数.. 但它仍然是errorr Erorr 位于GuzzleHttp \ Exception \ ServerException (500) 是不是大嘴有问题??谢谢你之前
  • 错误 500 表示服务器拒绝您的请求。检查服务器的日志文件以确定原因。它可能能够提供正在发生的事情的提示。

标签: php json laravel guzzle geoserver


【解决方案1】:

尝试创建一个变量 $username=admin 和其他 $password=geoserver,然后在 auth 数组中使用这两个变量。这对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2017-12-25
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2018-03-21
    相关资源
    最近更新 更多