Laravel 5.7:如何在Juzzle中进行JSON发布请求?

时间:2019-01-05 04:35:58

标签: php json laravel guzzle geoserver

这是我的代码,我想在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"}
     ]
   }
 }
  }

它有效。

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

1 个答案:

答案 0 :(得分:0)

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