在android中,我尝试以json结构发送到Web服务器。它适用于http。但是使用https,$ _POST值对消失了。在PHP中,var_dump $ _POST返回数组(0) 但是,HttpGet适用于http和https。
MyHttpClient httpClient = new MyHttpClient(context);
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
答案 0 :(得分:2)
如果我设置了HttpClientParams.setRedirecting(params,false);然后是页面 返回“临时断开链接已修复”
听起来您正在将您的请求发送到http://
网址并指望重定向(可能通过mod_rewrite
或类似的东西,例如PHP代码本身中的重定向)来翻页进入https
。
此操作模式首先向服务器发出纯HTTP请求,然后告知客户端资源已移至https://
地址。反过来,如果激活了自动重定向,则客户端会发出第二个请求。
根据the HTTP specification, for status codes 301 or 302(用于重定向),
如果收到301/302状态代码以响应除以外的请求 GET或HEAD,用户代理不得自动重定向 除非可以由用户确认,否则请求,因为这可能 改变发出请求的条件。
大多数浏览器将此解释为“如果第一个请求是POST,请不要重新发送重定向请求的数据,但无论如何都要使第二个请求成为GET”。这可以解释为什么你在第二次尝试时丢失了任何一个POST主体。
请注意,出于this answer中解释的原因,过度依赖重写/重定向将http://
请求转换为https://
请求应被视为不良做法。
答案 1 :(得分:1)
尝试在php中捕获raw post data。
$data = file_get_contents('php://input');