繁体   English   中英

尝试在C#中使用Sony Camera Remote API时,HTTP / 1.1 415不支持的媒体类型?

[英]HTTP/1.1 415 Unsupported Media Type when trying to use Sony Camera Remote API in C#?

我已经编写了一个小型C#程序来测试与QX100的通信,但无法正常工作。 关于为什么我得到不受支持的媒体类型的任何建议? 以下是Fiddler的代码和一些跟踪数据。

谢谢!

码:

        var httpWebRequest = (HttpWebRequest)WebRequest.Create("mylink");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = "{\"method\": \"getAvailableApiList\",\"params\": [],\"id\": 1,\"version\": \"1.0\"}";
            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                Console.WriteLine("httpResponse: " + result.ToString());
            }
            Console.ReadLine();
        }

帖子追踪:

 POST myLink HTTP/1.1
 Content-Type: application/json
 Host: 10.0.0.1:64321
 Content-Length: 71
 Expect: 100-continue
 Connection: Keep-Alive

 {"method": "getAvailableApiList","params": [],"id": 1,"version": "1.0"}

跟踪的响应:

  HTTP/1.1 415 Unsupported Media Type
  Connection: close
  Date: Wed, 26 Mar 2014 07:45:13 GMT
  Server: UPnP/1.0 SonyImagingDevice/1.0
  X-AV-Server-Info: av=5.0; hn=""; cn="Sony Corporation"; mn="SonyImagingDevice"; mv="1.0";
  X-AV-Physical-Unit-Info: pa=""; pl=;

我意识到这是一个古老的问题,但是它出现在Google上,所以我想我会发布为子孙后代找到的解决方案。

根据Sony API参考和这篇文章 ,相机不会在该端口上侦听API调用。 这是用于API描述文件的SSDP响应和GET请求的端口。 如果您发送此GET请求,

GET /DmsRmtDesc.xml HTTP/1.1
Host: 10.0.0.1
Accept: */*
Connection: close

然后,您会发现API返回带有此行的xml文件

<av:X_ScalarWebAPI_ActionList_URL>http://10.0.0.1:10000/sony</av:X_ScalarWebAPI_ActionList_URL>

对于我来说,所有POST请求都必须发送到该IP和端口,即10000。415响应正确,因为该端口不执行API调用。 我花了太长时间试图解决这个问题,因此希望它对某人有帮助。

该状态代码表示您向设备发送的请求的内容类型不是您期望的,或者是不理解的。

问题在于,似乎没有直接使用Sony相机的任何文档,因此您应该发送的内容并不明显。 但是还有另一种选择。 索尼已经为Java Camera API提供了一个SDK。 您可以从此页面下载SDK。

对于尝试使用C#访问摄像机的人来说,这并没有太大帮助,请注意,SDK的点击许可要求您不要对SDK进行反向工程,依此类推。 (请仔细阅读!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM