$description = "some test data and url";
$description .="http://www.mydata.com?test=1&user=4&destination=645&source=stackoverflow";
curl_setopt($sch, CURLOPT_URL, "myserverurl");
curl_setopt($sch, CURLOPT_HEADER, 0);
curl_setopt($sch, CURLOPT_POST, true);
curl_setopt($sch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt($sch, CURLOPT_POSTFIELDS, "orgid=$orgid&description=$description&external=1");
curl_setopt ($sch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($sch, CURLOPT_SSL_VERIFYPEER, 0);
当我检查服务器(myserverurl)时。
我可以看到描述字段,如
“一些测试数据和网址http://www.mydata.com?test=1”。
我在'&'
之后丢失了说明是的,我们可以在使用curl发送之前对网址进行编码,但我没有权限在该第三方api服务器上再次解码该网址
答案 0 :(得分:0)
如果您urlencode
发送的每个参数的值怎么办?
您不必担心另一方的解码:它是通过GET / POST发送数据的标准方式
类似的东西:
curl_setopt($sch, CURLOPT_POSTFIELDS,
"orgid=" . urlencode($orgid)
. "&description=" . urlencode($description)
. "&external=1"
);
如果这不起作用,请尝试使用rawurlencode
? (如果我没记错的话,空格有区别)
答案 1 :(得分:0)
易。您可以在输入后立即获取当前网址。
所以如果你输入
http://www.mydata.com?test=1&user=4&destination=645&source=stackoverflow
(我认为,mydata.com
是您的服务器),您可以非常轻松地回应它:
$url = str_replace("?","",$_SERVER['REQUEST_URI']);
echo $url;
以上回声应该给出:
test=1&user=4&destination=645&source=stackoverflow
从那时起,您可以简单地将整个字符串保存到数据库,或者通过either $_SERVER['test']
保存单个变量(测试,用户,目的地,来源),或者,如果它们中的一些变化,您可以爆炸它们由&
字符动态保存。
答案 2 :(得分:0)
将数据发布到数组中,并将该数组用作CURLOPT_POSTFIELDS
。
您可以在$_POST['description']
中获取说明。
示例强>
test.php的
<?php
$sch = curl_init();
$post_data=array();
$orgid='testorg';
$description = "some test data and url";
$description .="http://www.mydata.com?test=1&user=4&destination=645&source=stackoverflow";
$post_data['description']=$description;
$post_data['orgid']=$orgid;
$post_data['external']=1;
curl_setopt($sch, CURLOPT_URL, "localhost/testcurl.php");
curl_setopt($sch, CURLOPT_HEADER, 0);
curl_setopt($sch, CURLOPT_POST, true);
curl_setopt($sch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt($sch, CURLOPT_POSTFIELDS, $post_data);
$re=curl_exec($sch);
echo('<pre>');
echo($re);
testcurl.php
<?php
var_dump($_POST);
结果
array(3) {
["description"]=>
string(94) "some test data and urlhttp://www.mydata.com?test=1&user=4&destination=645&source=stackoverflow"
["orgid"]=>
string(7) "testorg"
["external"]=>
string(1) "1"
}
答案 3 :(得分:0)
这是一个简单的解决方案。如果你正在使用php使用函数curl_escape()`
$msg=$_POST['Message'];
$ch = curl_init();
$new = curl_escape($ch, $msg);
$ch = curl_init("url".$new."/xyz.com");
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);