예제 #1
0
 public function testDeleteRequestWithBody()
 {
     $request = new HttpRequest();
     $request->setMethod('DELETE');
     $request->setUrl('http://httpbin.org/delete?foo=23&bar=42');
     $request->setBody(array('foo' => 23, 'bar' => 42));
     $request->on('responseReceived', function ($event) {
         $response = $event->getTarget();
         if ($response->getHeaders()->get('Content-Type')->getMimeType() == 'application/json') {
             $decoded = json_decode($response->getBody());
             $response->setBody($decoded);
         }
     });
     $response = $request->send();
     $headers = $response->getHeaders();
     $this->assertEquals('HTTP/1.1 200 OK', $headers->get('Status'));
     $this->assertEquals('application/json', $headers->get('Content-Type')->getMimeType());
     $body = $response->getBody();
     $this->assertEquals(23, $body->args->foo);
     $this->assertEquals(42, $body->args->bar);
     $this->assertEquals(23, $body->form->foo);
     $this->assertEquals(42, $body->form->bar);
 }
예제 #2
0
 /**
  * @param Blar\Http\HttpRequest $request Request.
  * @param Blar\Webservice\WebserviceMethod $method Method.
  * @return self
  */
 protected function prepareRequest($request, $method)
 {
     $templateVariables = new Collection();
     $query = new Query();
     $body = array();
     foreach ($method->getParameters() as $parameter) {
         switch ($parameter->getStyle()) {
             case 'template':
                 $templateVariables->set($parameter->getName(), $parameter->getValue());
                 break;
             case 'query':
                 $query->set($parameter->getName(), $parameter->getValue());
                 break;
             case 'header':
                 $request->getHeaders()->set($parameter->getName(), $parameter->getValue());
                 break;
             case 'body':
                 $body[$parameter->getName()] = $parameter->getValue();
                 break;
         }
     }
     $url = $method->getUrl();
     $template = new UriTemplate($url);
     $url = $template->create($templateVariables);
     $url = new Url($url);
     $url->setQuery($query);
     $request->setUrl($url);
     $request->setBody($body);
     return $this;
 }