在Postman中,OkHttp等效代码真的没问题吗?

时间:2017-10-27 20:42:36

标签: android postman okhttp

我正在尝试向某个API发送json发布请求,该API会作为响应发回二进制文件。

我在Postman中做得很好:

部首:

Headers

身体和结果:

enter image description here

我从Code的{​​{1}} Postman部分获取了以下代码{/ 1}}

Java/OKHTTP

但是当我在android中使用上面的代码时,它失败了,我确信我获得了Internet许可,代码在OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\r\n \"Text\":\"Hello\",\r\n \"APIKey\":\"MY_API_KEY\",\r\n \"Speaker\":\"Female1\",\r\n \"Format\":\"mp3/32/m\",\r\n \"Quality\":\"quality/normal\"\r\n}"); Request request = new Request.Builder() .url("http://url/CloudService/ReadText") .post(body) .addHeader("content-type", "application/json") .addHeader("cache-control", "no-cache") .addHeader("postman-token", "0a1ce7c9-7a95-a2b9-7cde-8a7e6ce58386") .build(); Response response = client.newCall(request).execute(); 内执行。

我不会询问API或如何向某些API发送AsyncTask json请求并获取二进制文件作为响应。我用Post但没有用。作为回应,我获得了307状态代码(而不是client.newCall(request).enqueue(new Callback(){//stuff here});中的200)并且根本没有二进制数据。 API非常不清楚,并没有说明失败,我仍在努力。

我要问的是 Postman是否正确生成Postman的等效代码?如果不是,您在OkHttp中提出的相当于此请求的建议是什么?

仅提供另一个示例,以下内容也是一个有效的Java/OkHttp Python脚本来执行相同的工作:

requests

1 个答案:

答案 0 :(得分:0)

所以3天后我发现了问题,服务器API没有提到URL端点必须以/结束,即使在他们的示例代码中他们也没有使用一个。

似乎Postman和Python requests/的末尾使用了URL,但是Postman至少没有在生成的等效代码中提到。 OkHttp也不以相同的方式运作。

然而,使用尾随/解决了问题。