HttpGet 或 HttpPost 都不能传包含 ” 、“{“、”}”这样的参数,需要对特殊字符进行转义,
把 ” 转成%22,把 { 转成%7b,把 } 转成%7d
String url = "http://127/signal/Resource?param={\"name\":\"service1\",\"param\":{\"id\":\"1\"}}";
url = url.replace("\"", "%22").replace("{", "%7b").replace("}", "%7d");
我请求的时候,需要传递 { }
$data = (object)null;
$data = json_encode($data); // 请求参数
post 请求
public function curl_post($url,$data){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 4);
curl_setopt($ch, CURLOPT_ENCODING, ""); //必须解压缩防止乱码
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1; zh-CN) AppleWebKit/535.12 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/535.12");
// 设置了请求头
curl_setopt( $ch , CURLOPT_HTTPHEADER, array (
'Content-Type: application/json; charset=utf-8' ,
'Content-Length: ' . strlen ( $data )
)
);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$output = curl_exec($ch);
curl_close($ch);
print_r($output);
}