我正尝试在Android上使用REST API在Azure媒体服务上创建资产。我下面this documentation这是我的代码与来自Android的AMS端点连接,为什么Android HttpURLConnection无法使用REST API在Azure媒体服务上创建资产?
urlConnection = (HttpURLConnection) this._url.openConnection();
urlConnection.setRequestProperty("Content-Type", String.valueOf("application/json"));
urlConnection.setRequestProperty("DataServiceVersion", String.valueOf("1.0;NetFx"));
urlConnection.setRequestProperty("MaxDataServiceVersion", String.valueOf("3.0;NetFx"));
urlConnection.setRequestProperty("Accept", String.valueOf("application/json"));
urlConnection.setRequestProperty("Accept-Charset", String.valueOf("UTF-8"));
urlConnection.setRequestProperty("Authorization", String.format(Locale.ENGLISH, "Bearer %s", _token));
urlConnection.setRequestProperty("x-ms-version", String.valueOf(2.11));
urlConnection.setRequestProperty("x-ms-client-request-id", UUID.randomUUID().toString());
urlConnection.setRequestProperty("Host", this._host);
urlConnection.setRequestProperty("Content-Length", String.valueOf(this._postData.length));
urlConnection.setRequestProperty("Expect", String.valueOf("100-continue"));
urlConnection.setConnectTimeout(CONNECTION_TIME_OUT);
urlConnection.setReadTimeout(CONNECTION_READ_TIME_OUT);
urlConnection.setInstanceFollowRedirects(true);
urlConnection.setRequestMethod("POST");
urlConnection.setUseCaches(false);
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
OutputStream wr= urlConnection.getOutputStream();
wr.write(_postData);
wr.flush();
wr.close();
而且我_postData
变量是字节数组,我从JSON转换,
_fileName = _fileName.replace(" ", "-");
JSONObject jo = new JSONObject();
jo.put("Name", _fileName+".mp4");
jo.put("Options", String.valueOf(0));
this._postData = jo.toString().getBytes("UTF-8");
我一直在使用谷歌试图Chrome浏览器的REST api客户端扩展程序来检查发布请求,它工作正常。我得到了我期望从Chrome的REST API客户端扩展中得到的响应,但是使用Android时,我没有得到相同的响应。我从这段代码获得this response,这是我在运行此代码之前已执行的步骤。我已经使用了两个端点https://media.windows.net/
和https://wamsbayclus001rest-hs.cloudapp.net/
,但它不适用于Android。我相信Android正在改变Headers,或者AMS没有正确解析的头文件有问题。谁能指导我如何使用Android HttpUrlConnection
来实现这个目标?
谢谢。