httpClient 如何写一个参数是JSON串,然后带一个音频文件的POST 提交
项目有一个HTTP方式访问的,可以同时提交语音文件的接口。接口提交格式要求如下:
(POST)[ServiceUrl]/quickAnalysisFromData
说明:包体中使用multipart/form-data的方法传输json参数串和数据,格式为utf8,不能包含中文等字符。第一部分为json格式的参数串;第二部分是二进制音频数据流。
示例是:
请求包体:带二进制音频流的方式:
--${bound}
{
"resultFilePath": "ftp: //10.0.1.10: 121/result/",
"audioFormat": -1,
"property": "chinese_8k_common",
"audioChannelType": 0,
"priorityProcess": 1,
"resultType": 2
}
--${bound}
....二进制流音频数据.....
--${bound}--
我写的方法如下,因为项目在异地,没办法连接服务器测试,对方支持一问三不知,总觉得按要求json参数这样传递不对,请各位大神帮忙看一下是否合适!
public static void main(String[] args) {
// TODO Auto-generated method stub
HttpClient client = new HttpClient();
client.getHostConfiguration().setProxy("127.0.0.1", 8888);//给fidder抓包用
PostMethod myPost = new PostMethod(URL);
try {
myPost.setRequestHeader("Content-Type", "multipart/form-data");
//参数部分
Map map= new HashMap();
map.put("app_key", app_key);
map.put("dev_key", dev_key);
map.put("cap_key", cap_key);
map.put("domain", "common");
map.put("audioformat", "");
map.put("cap_key", cap_key);
map.put("cap_key", cap_key);
JSONObject jsonObj = new JSONObject();
String jsonStr=jsonObj.toJSONString(map);//转成json串
//添加Part---------------------
File f = new File("D://voice//fccf52889872c9cee8cd1bf0ed234069.amr");
Part[] parts = {
new StringPart("jsonStr",jsonStr,"UTF-8"),
new FilePart(f.getName(), f)
};
MultipartRequestEntity entity = new MultipartRequestEntity(parts, myPost.getParams());
myPost.setRequestEntity(entity);
int statusCode = client.executeMethod(myPost);
String.format("%d", statusCode);
System.out.println(statusCode);
} catch (Exception e) {
e.printStackTrace();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论