2014-03-26 63 views
1

我寫了一個小小的C#程序來測試與我的QX100的通信,但無法讓它工作。關於爲什麼我獲得不受支持的媒體類型的任何建議? 以下是來自Fiddler的代碼和一些跟蹤數據。HTTP/1.1 415嘗試在C#中使用Sony Camera Remote API時不支持媒體類型?

謝謝!

代碼:

 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"} 

Respons追蹤:

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=; 

回答

0

這狀態代碼意味着你發送一個請求到設備與內容類型它沒有想到,或不明白。

問題是,似乎沒有任何直接使用索尼相機的文檔,所以它不是什麼你應該發送。但有一個選擇。索尼已經爲Java相機API提供了一個SDK。您可以從this page下載SDK。

對於試圖使用C#訪問攝像頭的人來說,這並沒有太大幫助,並且請注意,SDK的點擊通過許可證要求您不要對SDK進行反向工程,等等。 (仔細閱讀!)

+0

正是我非常想要與之交互的API,並且在API的docomentation中,它將內容稱爲應用程序/ json,因爲我已經使用過,因此問題還有什麼,可能很愚蠢,做過了嗎? –

+0

@PeterJ - 我建議你要麼使用Java,要麼聯繫索尼,並要求他們提供建議。 –

+0

該評論引起了一些爭議22情況:)索尼開發者網站依靠StackOverflow作爲他們的支持渠道。也許索尼的某個人最終會讀到這個對話並提出一個答案。 –

1

我意識到這是一個古老的問題,但它出現在谷歌,所以我想我會發布我爲後代找到的解決方案。

根據索尼API參考和此post ,攝像機不偵聽該端口上的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調用。我花了很長時間嘗試 來解決這個問題,所以我希望它能幫助別人。

相關問題