亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# WebClient 使用 UploadString 從同樣在 C# 中的

C# WebClient 使用 UploadString 從同樣在 C# 中的

C#
墨色風雨 2022-12-31 12:49:24
我希望在 C# 中也能在 C# 中調用 ApiController,但在使用 WebClient 實例的 UploadString 方法上傳 Json 時出現錯誤 415 或 400。服務器代碼是自動生成的調用TestController。該文件正是 Visual Studio 2019 生成它的方式。[Route("api/[controller]")][ApiController]public class TestController : ControllerBase{    // GET: api/Test    [HttpGet]    public IEnumerable<string> Get()    {        return new string[] { "value1", "value2" };    }    // POST: api/Test    [HttpPost]    public void Post([FromBody] string value)    {    }    ...}客戶端代碼如下所示:WebClient client = new WebClient();client.UploadString("https://localhost:44345/api/Test", "ABC");   // Edit: "ABC" is not a valid JSON我收到 System.Net.WebException:“遠程服務器返回錯誤:(415) 不支持的媒體類型?!彼栽诠雀杷阉髦?,大多數建議是 ContentType 沒有得到指定,如果我添加client.Headers[HttpRequestHeader.ContentType] = "application/json";我收到System.Net.WebException:“遠程服務器返回錯誤:(400) 錯誤請求?!庇惺裁淳€索嗎?似乎問題與POST/ PUT/ PATCH...有關,如果我這樣做GET,它正在工作并向我返回樣本數據["value1","value2"]編輯:我不堅持使用 WebClient.UploadString 方法,但我想要一個不涉及 25 行自定義代碼的解決方案......我的意思是我不敢相信你可以在 jQuery 中使用一條線。
查看完整描述

2 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

我收到 System.Net.WebException:“遠程服務器返回錯誤:(415) 不支持的媒體類型?!?/strong>

當您使用 時[FromBody],將使用Content-Type標頭來確定如何解析請求正文。未指定時Content-Type,模型綁定進程不知道如何使用主體,因此返回 415。

我收到System.Net.WebException:“遠程服務器返回錯誤:(400) 錯誤請求。”

通過將Content-Type標頭設置為application/json,您指示模型綁定過程將數據視為 JSON,但ABC它本身不是有效的 JSON。如果您只想發送一個 JSON 編碼的字符串,您也可以將值用引號引起來,如下所示:

client.UploadString("https://localhost:44345/api/Test", "\"ABC\"");

"ABC"是一個有效的 JSON 字符串,將被您的 ASP.NET Core API 接受。


查看完整回答
反對 回復 2022-12-31
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

簡單的解決方案:


Content-type調用 API 時在標頭中指定,


            WebClient client = new WebClient();

            client.Headers.Add("Content-Type", "text/json");

            client.UploadString("https://localhost:44345/api/Test", "\"ABC\"");

編輯:


不要使用[From_Body]屬性,因為它具有糟糕的錯誤處理能力,請參見此處。


如果請求正文有任何無效輸入(語法錯誤、不受支持的輸入),那么它將拋出錯誤請求和不受支持的內容400。415出于同樣的原因,如果它不理解格式,它可能會將 null 作為來自請求正文的輸入。


因此,刪除該屬性并嘗試以純格式上傳字符串,因為它只接受 String 并且您在發出請求時不需要指定 Content-Type 屬性。


[HttpPost]

 public void Post(string value)

 {


 }

并像您在原始帖子中的稱呼一樣稱呼它。


WebClient client = new WebClient();

client.UploadString("https://localhost:44345/api/Test", "ABC");


查看完整回答
反對 回復 2022-12-31
  • 2 回答
  • 0 關注
  • 335 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號