Browse Source

omit equal sign if query component is not a key value pair

Ceeram 14 years ago
parent
commit
cccf663c23

+ 1 - 0
lib/Cake/Network/Http/HttpSocket.php

@@ -647,6 +647,7 @@ class HttpSocket extends CakeSocket {
 
 		$uri['path'] = preg_replace('/^\//', null, $uri['path']);
 		$uri['query'] = $this->_httpSerialize($uri['query']);
+		$uri['query'] = rtrim($uri['query'], '=');
 		$stripIfEmpty = array(
 			'query' => '?%query',
 			'fragment' => '#%fragment',

+ 21 - 1
lib/Cake/Test/Case/Network/Http/HttpSocketTest.php

@@ -550,7 +550,7 @@ class HttpSocketTest extends CakeTestCase {
 
 /**
  * Test the scheme + port keys
- * 
+ *
  * @return void
  */
 	public function testGetWithSchemeAndPort() {
@@ -569,6 +569,26 @@ class HttpSocketTest extends CakeTestCase {
 	}
 
 /**
+ * Test urls like http://cakephp.org/index.php?somestring without key/value pair for query
+ *
+ * @return void
+ */
+	public function testRequestWithStringQuery() {
+		$this->Socket->reset();
+		$request = array(
+			'uri' => array(
+				'scheme' => 'http',
+				'host' => 'cakephp.org',
+				'path' => 'index.php',
+				'query' => 'somestring'
+			),
+			'method' => 'GET'
+		);
+		$response = $this->Socket->request($request);
+		$this->assertContains("GET /index.php?somestring HTTP/1.1", $this->Socket->request['line']);
+	}
+
+/**
  * The "*" asterisk character is only allowed for the following methods: OPTIONS.
  *
  * @expectedException SocketException