首页 > 后端开发 > php教程 > content-type - java访问php接口问题,$_POST默认接收的contentType是?

content-type - java访问php接口问题,$_POST默认接收的contentType是?

WBOY
发布: 2016-06-06 20:36:08
原创
1248 人浏览过

背景

  1. 现在java需要访问我的php接口
  2. 我这边直接$_POST取值

测试工具是mac下的,我不太清楚,是HTTP服务测试工具,填我的api地址,参数,然后访问类型Post/Get,然后线程数什么的,然后开始跑,其中有一个选项是使用multipart/form-data,如果勾上就很快。

php端

我这边php其实就走的普通方法,差不多这样:

<code>function check_username(){
    $username = $_POST['username'];
    $result = _check_username($username);
    return json($result);
}
</code>
登录后复制
登录后复制

java端

用的封装的类库,好像HttpClient之类的,我只知道默认的请求的ContentTypeapplication/x-www-form-urlencode

问题

  • 用测试工具发现
  1. 如果是contentTypeapplication/x-www-form-urlencode访问,需要好长时间,平均几秒钟
  2. 如果是multipart/form-data则非常快,几十毫秒就完了

为什么会出现这种情况啊?

我用$_GET['username']也是可以取到的,application/x-www-form-urlencode这个本质上是不是就是Get请求啊?

回复内容:

背景

  1. 现在java需要访问我的php接口
  2. 我这边直接$_POST取值

测试工具是mac下的,我不太清楚,是HTTP服务测试工具,填我的api地址,参数,然后访问类型Post/Get,然后线程数什么的,然后开始跑,其中有一个选项是使用multipart/form-data,如果勾上就很快。

php端

我这边php其实就走的普通方法,差不多这样:

<code>function check_username(){
    $username = $_POST['username'];
    $result = _check_username($username);
    return json($result);
}
</code>
登录后复制
登录后复制

java端

用的封装的类库,好像HttpClient之类的,我只知道默认的请求的ContentTypeapplication/x-www-form-urlencode

问题

  • 用测试工具发现
  1. 如果是contentTypeapplication/x-www-form-urlencode访问,需要好长时间,平均几秒钟
  2. 如果是multipart/form-data则非常快,几十毫秒就完了

为什么会出现这种情况啊?

我用$_GET['username']也是可以取到的,application/x-www-form-urlencode这个本质上是不是就是Get请求啊?

默认的普通表单POST是application/x-www-form-urlencode,上传文件的表单是multipart/form-data
两种方式由于用不同的编码解码方法,使得前者适合传数据量少的键值对,后者适合传二进制文件。
于浏览器来讲,对两种方式支持的都很好,而且HTML5中加入了FormData,可以很方便的构造multipart/form-data请求表单。
于PHP来讲,两者从Apache或nginx等服务器到$_POST中的大变量之间,大致的生命周期都是一样的,只有send——parse这一步做的工作不同。
两者虽说存在一定的效率差距,但出现up主说的这种两个数量级的差距,还是非常罕见的。

所以我觉得出现这种问题,你用浏览器测一下,或者在java访问日志和php响应日志里看一下实际的效率,而不是测试工具(不清楚你用的是什么测试工具),看下问题到底是出在java构造请求,还是php解析请求并返回时,还是中间的网络上等原因

能贴一下你的代码吗?你这样大家完全不能回答
你可以用wireshark抓一下报文吗?

  • 先确定你的报文是不是很大?
  • 你的php的是apache ,还是fpm还是fastcgi ?

能再补充详细点吗?

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板