WCF 遠端伺服器返回錯誤 400 錯誤的請求

2022-01-24 03:30:45 字數 1928 閱讀 4202

wcf- restful介面 post方式呼叫報錯(遠端伺服器返回錯誤: 400 錯誤的請求)

wcf rest:不使用uritemplate使用post方式傳參解決http400問題以及引數對映問題

等等!標記自己遇到的問題原因,描述如下:

伺服器介面:

[webinvoke(method = "*", requestformat = webmessageformat.json, responseformat = webmessageformat.json)]

[operationcontract]

string getexptrainhist(string strjson);//入參為string型別

客戶端呼叫:

request.method = "post";

//*****=測試資料*****=start***************

exptrainhist_req t = new exptrainhist_req();

t.account = "exp";

t.fc = "exptrainhist_req";

t.starttime = "2017-04-17 13:00:00";

t.endtime = "2017-04-17 14:04:51";

string data = newtonsoft.json.jsonconvert.serializeobject(t);

//string inputstring = "c901411";

//*****=end**********=

string inputstring = data;

//string inputstring = "";

byte bytearray = system.text.encoding.utf8.getbytes(inputstring);

request.contentlength = bytearray.length;

stream rstream = request.getrequeststream();

rstream.write(bytearray, 0, bytearray.length);

rstream.close();

httpwebresponse response = (httpwebresponse)request.getresponse();//此處報錯:遠端伺服器返回錯誤: 400 錯誤的請求

stream stream = response.getresponsestream();

streamreader sr = new streamreader(stream);

string info = sr.readtoend();

string temp = newtonsoft.json.jsonconvert.deserializeobject(info).tostring();

sr.dispose();

部落格的問題原因:

注意:json格式預設為「」引起,所以 "\"ss\""不能寫為「ss」,否則還是http400錯誤。因為未識別資料,將資料拼接到其他位元組了吧。

自己的入參改為:

//首先將data的 json字串的雙引號改成單引號,再加上雙引號傳到服務,問題解決。

inputstring = "\"" + data.replace("\"","\'") + "\""

byte bytearray = system.text.encoding.utf8.getbytes(inputstring);

request.contentlength = bytearray.length;

stream rstream = request.getrequeststream();

rstream.write(bytearray, 0, bytearray.length);

rstream.close();

遠端伺服器返回錯誤 404 未找到

說明 執行當前 web 請求期間,出現未處理的異常。請檢查堆疊跟蹤資訊,以了解有關該錯誤以及 中導致錯誤的出處的詳細資訊。異常詳細資訊 system.net.webexception 遠端伺服器返回錯誤 404 未找到。源錯誤 行 20 public void listallproducts 行 2...

遠端伺服器返回錯誤 404 未找到。

乙個採集資料的程式。行 43 webrequest req webrequest.create urls 行 44 httpwebresponse httpreq httpwebresponse req.getresponse 報錯 行 45 stream s httpreq.getresponse...

WCF遠端呼叫無法識別伺服器名

下面我介紹一下我的問題 我開發了一寫wcf服務,採用iis進行host。由於這個專案涉及到跨區域的使用,因此我們的客戶申請了乙個固定公網ip位址。公網ip直接連線在路由器上,然後通過路由器的埠對映,將公網ip位址對映到內網ip位址。內網伺服器安裝windows2003,iis6.0。由於wcf預設發...