我正在将项目的网络代码从使用HttpUrlConnection和GET请求转换为使用Apache HttpClient和POST请求。
val client = HttpClients.createDefault()
val postReq = HttpPost("http://VALID_DOMAIN/app/posttest.php")
postReq.entity = HttpEntities.create("tst=1234")
val response = client.execute(postReq) { return@execute EntityUtils.toString(it.entity) }
服务器上的文件posttest.php:
<?php
$get = $_GET['tst'];
$post = $_POST['tst'];
$request = $_REQUEST['tst'];
echo "This Server Says \n_GET: $get \n_POST: $post \n_REQUEST: $request";
?>
但是,在冒号后面打印了注解,其中应该是参数'tst'的输出。我已经检查了服务器错误日志,并确保所有内容都正确编译,无法识别问题。
1条答案
按热度按时间umuewwlo1#
PHP只会在HTTP POST的
Content-Type
是application/x-www-form-urlencoded
或multipart/form-data
的情况下尝试填充$_POST
超全局。我不是一个Kotlin开发人员,但在我看来,您需要要么显式设置
Content-Type
,要么像这样使用UrlEncodedFormEntity
(这可能会为您设置Content-Type
头文件):在任何一种情况下,您都可以在PHP中的
$_SERVER
超全局文件中看到完整的HTTP请求头(只有var_dump($_SERVER)
),它们的前缀是HTTP_
,因此您将在$_SERVER['HTTP_CONTENT_TYPE']
中看到Content-Type
-header。