0
我遇到了一些麻煩,與我的.Net WPF應用程序(.Net 4.5)中的restful服務進行通信,特別是在發送「PUT」請求時與一些JSON數據。c#httpcontent「400 - 錯誤的請求」如果字符串中包含換行符
僅供參考:寧靜服務在Python Flask下運行。
我用下面的方法來發送請求到RESTful服務的方法:
HttpClient http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", encodedCredentials);
http.Timeout = TimeSpan.FromSeconds(1);
// Add an Accept header for JSON format.
http.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpContent content = new StringContent(jDataString, Encoding.UTF8, "application/json");
當我提交往常一樣串,所有工作得很好。但是,只要字符串包含換行符,我就遇到了麻煩。
使用:
mytring.Replace("\r", "").Replace("\n", "")
的作品,我的字符串,然後由RESTful服務接受。
不幸的是,這是不可接受的,因爲我希望能夠檢索換行符。
我因此試圖像的方法:
,甚至有內部的字符,以確保我認識模式:
mytring.Replace("\n", "\\+n").Replace("\r", "\\+r")
在這兩種情況下,我分析的字符串看起來不錯,但不被寧靜的服務所接受。
下面兩個例子 - 第一個版本被接受,而不是第二和第三...
"XML_FIELD": "<IDs><Id Type=\"System.Int32\" Value=\"7\" /></IDs>"
"XML_FIELD": "<IDs>\r\n<Id Type=\"System.Int32\" Value=\"20\" />\r\n</IDs>"
"XML_FIELD": "<IDs>\+r\+n<Id Type=\"System.Int32\" Value=\"20\" />\+r\+n</IDs>"
在此先感謝您的幫助! 關心!