首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

.NET MVC4 Web API 返回 JSON 時被當作 XML 處理的解決方案

     編輯:程式設計綜合問答

現象描述

瀏覽器直接訪問 Web API 可正常返回 JSON,但在另一專案中「添加 Web 引用」調用卻報錯。原因在於「Web 引用」預期的是 XML 格式的 SOAP 服務,而非 RESTful JSON。

解決路徑

方案一:改用 HttpClient 調用 REST API(推薦)

using (var client = new HttpClient()) {
    client.BaseAddress = new Uri("https://api.example.com/");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var response = await client.GetAsync("api/values");
    var json = await response.Content.ReadAsStringAsync();
    var data = JsonConvert.DeserializeObject(json);
}

方案二:強制 Web API 返回 XML

在 WebApiConfig.cs 中移除 JSON 格式化器或添加 XML 格式化器:

config.Formatters.Remove(config.Formatters.JsonFormatter);
config.Formatters.Add(new XmlMediaTypeFormatter());

但這違背 REST 設計初衷,不建議長期使用。

方案三:改用傳統 ASMX Web Service

若必須使用「Web 引用」,可建立 .asmx 服務,原生支持 SOAP/XML。

核心建議

RESTful API 應使用 HttpClient/HttpWebRequest 直接調用,而非「Web 引用」。 兩者屬於不同架構風格,強行融合只會增加維護成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved