如何在Android中使用带有“application / octet-stream”的HTTP POST? (微软认知视频)

时间:2016-10-18 03:29:45

标签: android microsoft-cognitive

我想在Android中使用视频认知服务。 Microsoft提供的示例用于C#。 视频功能正在向服务器发送URL, 所以我认为可以使用HTTP POST在Android中发送URL。

http://ppt.cc/V1piA

我遇到的问题是我不知道“application / octet-stream”中的URL格式,我没有在微软网站上看到这个例子。

是否可以在Android中使用HTTP POST将下载的视频上传到服务器,我可以从服务器获取分析结果?

如果可能,HTTP POST的格式是什么,以向服务器发送请求?

感谢。

2 个答案:

答案 0 :(得分:1)

你可以尝试这样的东西来发送用于认知服务面部检测的图像文件。 使用org.apache.httpcomponents :: httpclient:

    @Test
    public void testSendBinary() throws MalformedURLException {
        File picfile = new File("app/sampledata/my_file.jpeg");
        if (!picfile.exists()) throw new AssertionError();


        HttpClient httpclient = HttpClients.createDefault();

        try {
            URIBuilder builder = new URIBuilder("https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect");

            builder.setParameter("returnFaceId", "true");
            builder.setParameter("returnFaceLandmarks", "false");

            URI uri = builder.build();
            HttpPost request = new HttpPost(uri);
            request.setHeader("Content-Type", "application/octet-stream");
            request.setHeader("Ocp-Apim-Subscription-Key", "***");

            // Request body
            request.setEntity(new FileEntity(picfile));

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) {
                System.out.println(EntityUtils.toString(entity));
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

答案 1 :(得分:0)

HTTP POST指的是HTTP method 'POST'application/octet-stream指的是媒体类型 - 在这种情况下是应用程序特定的八位字节或字节流。

遗憾的是,这是非常主观的,因为通过HTTP动作上传内容的机制可能是这样或那样的优选方式。可以这么说,您将创建内容的InputStream,使用您选择的机制格式化POST请求:

确保将POST的内容类型设置为application / octet-stream。

执行帖子后,请参阅API文档以了解预期的返回类型。