2016-02-26 79 views
0

我試圖發送JSON請求到HTTPS安全的REST服務。客戶解釋說REST服務正在使用自簽名證書。他還解釋說,這是一項開發服務,我應該忽略任何證書警告。 (該服務在樹莓派運行在我們的辦公室)發送HttpWebRequest到HTTPS REST服務

他轉發我下面捲曲的請求,以證明它的工作:

curl -k -H "Content-Type: application/json" -X POST -d '{"MerchantReference":"[removed]", 
    "Command":"Debit", "Amount":5500,"DeviceSerialNumber":"[removed]"}' https://[removed] 

當我建立與膩子連接並運行此,我得到一個所以一切都很好。但是,當我在C#中編寫應用程序來執行此操作時,出現以下異常: 「底層連接已關閉:發送時發生意外錯誤。」內部例外是:「驗證失敗,因爲遠程方關閉了傳輸流。」

這裏是我的C#代碼:

var tempRequest = @"{""MerchantReference"":""[removed]"",""Command"":""Debit"", 
            ""Amount"":5500,""DeviceSerialNumber"":""[removed]""}"; 

HttpWebRequest webRequest = WebRequest.Create(HttpAddress) as HttpWebRequest; 
webRequest.Method = WebRequestMethods.Http.Post; 
webRequest.ContentType = "application/json"; 

byte[] buffer = Encoding.UTF8.GetBytes(tempRequest); 
Stream postData = webRequest.GetRequestStream(); 
postData.Write(buffer, 0, buffer.Length); 
postData.Close(); 

var webResponse = webRequest.GetResponse(); // The exception occurred here 

我已經在應用程序的開始增加了一個回調ServicePointManager.ServerCertificateValidationCallback剛剛接受任何證書,但執行甚至沒有達到這個部分。

所以我的問題是如何在C#中複製CURL結果。

任何援助將不勝感激。

回答

0

我發現了這個問題。使用TLS v1.2,我們正在使用僅支持TLS V1.0的.Net 4.0。我們將升級到.Net 4.5或使用不同版本的TLS。