java http post 怎么设置 raw格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java http post 怎么设置 raw格式相关的知识,希望对你有一定的参考价值。
调试微信推广支持中二维码生成api的接口,使用chrome浏览器的postman插件,post请求时有一个选项是form-data,或者raw,使用raw可以请求成功,from-data不知道怎么组装key和value所以一直失败。非常不明白raw是什么意思,google百度都没有相关的解释。后来研究发现,其实raw方式使用的是纯字符串的数据上传方式,所以在POST之前,可能需要手工的把一些json/text/xml格式的数据转换成字符串,是一种post原始请求,区别于form-data这种常用的key-value方式。public static String result; public static void httpTest() throws ClientProtocolException, IOException String token = "R5amyr6NyXCtWdScmNiuvVwBCJztfByZDUGaE2V0NwOUheW4XYlvUusYkrViTYt584RgcyXRhjxAJZG3rFlPLg"; String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token; String json = ""action_name":"QR_LIMIT_SCENE","action_info":"scene":"scene_id":234"; HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(url); StringEntity postingString = new StringEntity(json);// json传递 post.setEntity(postingString); post.setHeader("Content-type", "application/json"); HttpResponse response = httpClient.execute(post); String content = EntityUtils.toString(response.getEntity()); // Log.i("test",content); System.out.println(content); result = content;
以上代码中需要导入
import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils;
android中自带org.apache.http相关库文件,所以可以快捷键(ctrl+shift+o)一次导入成功。 参考技术A public static String result;
public static void httpTest() throws ClientProtocolException, IOException
String token = "R5amyr6NyXCtWdScmNiuvVwBCJztfByZDUGaE2V0NwOUheW4XYlvUusYkrViTYt584RgcyXRhjxAJZG3rFlPLg";
String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="
+ token;
String json = "\"action_name\":\"QR_LIMIT_SCENE\",\"action_info\":\"scene\":\"scene_id\":234";
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
StringEntity postingString = new StringEntity(json);// json传递
post.setEntity(postingString);
post.setHeader("Content-type", "application/json");
HttpResponse response = httpClient.execute(post);
String content = EntityUtils.toString(response.getEntity());
// Log.i("test",content);
System.out.println(content);
result = content;
PHP_RAW_POST_DATA特性
在PHP5.6.x中已废止特性
使用 always_populate_raw_post_data 会导致在填充 $HTTP_RAW_POST_DATA 时产生 E_DEPRECATED
错误。 请使用 php://input 替代$HTTP_RAW_POST_DATA, 因为它可能在后续的 PHP 版本中被移除。 设置 always_populate_raw_post_data 为 -1 (这样会强制 $HTTP_RAW_POST_DATA 未定义,所以也不回导致 E_DEPRECATED
的错误) 来体验新的行为。
来源:https://www.php.net/manual/zh/migration56.deprecated.php
1、如果是 application/x-www-form-urlencoded 和 multipart/form-data 格式 用 $_POST;
2、如果不能获取的时候比如 text/xml、application/json、soap,使用 file_get_contents(‘php://input‘);
在使用HTTP_RAW_POST_DATA时,建议写法:
$postStr = isset($GLOBALS[‘HTTP_RAW_POST_DATA‘]) ? $GLOBALS[‘HTTP_RAW_POST_DATA‘] : file_get_contents("php://input");
以上是关于java http post 怎么设置 raw格式的主要内容,如果未能解决你的问题,请参考以下文章
微信公众平台中开放的消息接口,详细怎么用?我的$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];为空?