我现在已经阅读了很多关于请求方法的内容,我找到了一个提供这个php示例的示例:
<?php
// Read request parameters
$firstName= $_REQUEST["firstName"];
$lastName = $_REQUEST["lastName"];// Store values in an array
$returnValue = array(“firstName”=>$firstName, “lastName”=>$lastName);
// Send back request in JSON format
echo json_encode($returnValue);
?>
我已经在swift中编写了一个将数据发送到这个php的IOS应用程序,然后我将使用该网站并将收到的数据写入服务器上的文本文件,是$ _Request方法的正确方法吗?
将数据发送到网站的IOS部分(不完整代码):
let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost/test.php")!)
request.HTTPMethod = "POST"
let postString = "firstName=Neil&lastName=Johnson"
注意:这段代码没有接缝工作(第4,5和6行的未定义索引,但我不知道为什么因为我不能在这里使用isset方法,因为有些线程声明要删除错误)
谢谢你
答案 0 :(得分:2)
首先,$_REQUEST
不是&#34;方法&#34;,它是&#34;超全球变量&#34;。使用括号()调用方法。通过方括号[]访问数组(例如this)。
&#34;未定义的索引&#34;意味着你试图访问一个不存在的数组元素,这表明你没有正确地将firstName和/或lastName发布到PHP。
通常,您不应手动编写POST消息。 iOS / Swift中有什么东西可以对变量进行表单编码吗?如果没有,您是否将内容类型设置为application/x-www-form-urlencoded
?也许就是这样。
最后,你在这一行引用
$returnValue = array(“firstName”=>$firstName, “lastName”=>$lastName);
很奇怪。您需要使用键盘上的标准"
。如果您从博客中复制粘贴某些内容,WordPress可能会为您复制这些内容。
答案 1 :(得分:1)
这个让很多人感到困惑,所以我试图尽可能客观地解释这一点。
PHP有一些super global variables,它们会根据特定条件自动填充。
$_POST
当期望资源的HTTP请求方法为$_POST
时,您应该使用POST
超全局访问您的数据。 POST
请求动词通常用于非幂等请求(例如签出购物车或将帖子添加到网络论坛)。
请注意$_POST
仅在Content-type
标题为www-form-urlencoded
或multi-part
编码时填充。否则,您必须检查php://input
,因为PHP可能无法将其解码为$_POST
。 PHP也会稍微破坏名称(例如,它用下划线替换空格和点)。有关详细信息,请参阅Handling External Variables。
$_GET
相反,您应该在期望输入成为查询字符串的一部分时使用$_GET
,或者在您明确将请求method
设置为GET
的表单中使用GET
。请注意,这并不一定意味着您希望HTTP请求动词每次都为$_REQUEST
。
$_REQUEST
当您实际上不关心HTTP请求谓词是POST
还是GET
时,您使用$_REQUEST
,因为POST
将两者合并为一个数组。在这种情况下,重要的是要认识到如果在GET
和$_REQUEST
中同时填充了a specific order in which they will be overwritten的相同名称。
在RESTful方法中明确表达总是更好,你很少依赖POST
。在您的情况下,您似乎明确发送了$_POST
请求,因此在这种情况下我会坚持使用POST
。但是你很可能发送$_GET
请求并仍然期望查询字符串中的输入,在这种情况下$_REQUEST
是合适的。在大多数情况下,我很少看到#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1
#define TASK_UNINTERRUPTIBLE 2
#define __TASK_STOPPED 4
#define __TASK_TRACED 8
/* in tsk->exit_state */
#define EXIT_DEAD 16
#define EXIT_ZOMBIE 32
#define EXIT_TRACE (EXIT_ZOMBIE | EXIT_DEAD)
/* in tsk->state again */
#define TASK_DEAD 64
#define TASK_WAKEKILL 128
#define TASK_WAKING 256
#define TASK_PARKED 512
#define TASK_NOLOAD 1024
#define TASK_STATE_MAX 2048
的真正需要。