解决方案 因为objective-c 不编码&(因为它是保留的),所以您应该创建自己的方法。资料来源:使用带有 Obj-C 的帖子发送放大器 (&)
对于我的 iOS 和 Android 应用程序,我使用 php 脚本来获取一些数据。该脚本有 1 个参数,它是一个链接。基本上该脚本如下所示:
$link= urlVariable('link');
$source = file_get_contents($link);
$xml = new SimpleXMLElement($source);
//Do stuff with the xml
但是当我发送带有 & 符号的链接时,它会在 file_get_contents 上崩溃
Warning: file_get_contents(https://www.example.com/xxxx/name_more_names_) [function.file-get-contents]: failed to open stream: HTTP request failed!
但完整的论点是
name_more_names_&_more_names_after_the_ampersand.file
我尝试在将链接发送到 file_get_contents 之前对其进行编码,但没有成功。
也试过:
function file_get_contents_utf8($fn) {
$content = file_get_contents($fn);
return mb_convert_encoding($content, 'UTF-8',
mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}
结果相同。
有人知道为什么它会在&处中断吗?我不是网络开发人员,而是应用程序开发人员,所以请原谅我缺乏这方面的知识。
编辑 也试过这个:
$link= urlVariable('link');
$encodedLink = urlencode($link);
$source = file_get_contents($encodedLink);
这是结果:
Warning: file_get_contents(https%3A%2F%2Fwww.example.com%2Fxxxxx%2Fname_more_names_) [function.file-get-contents]: failed to open stream: No such file or directory in
编辑#2
我找到了为什么我的网址在 & 符号处停止。我用这个方法从 url 中检索我的论点:
function urlVariable($pVariableName)
{
if (isset ($_GET[$pVariableName]))
{
$lVariable = $_GET[$pVariableName];
}
else
{
$lVariable = null;
}
return $lVariable;
}
_GET() 用 & 符号分隔参数对吗?