编写ASP.NET程序调用牛津词典API时,如何添加请求头?
解决ASP.NET中调用牛津词典API添加请求头的问题
先帮你梳理代码里的几个小问题,再给出完整的正确实现:
1. 变量声明的位置错误
你把PrimeUrl和uri标记成public static后放在了Page_Load方法内部,这在C#里是不允许的——静态变量得放在类级别(方法外面)。
2. 请求头的拼写错误
代码里的app_ke明显是漏写了最后一个字母,应该是app_key,这个拼写错误会直接导致API验证失败,一定要修正。
3. 修正后的完整代码
我还补充了响应读取和异常处理的逻辑,方便你直接获取API返回的结果:
public partial class YourPage : System.Web.UI.Page { // 把静态变量移到类级别,更符合C#语法规范 private static string PrimeUrl = "https://od-api.oxforddictionaries.com:443/api/v1/entries/en/"; protected void Page_Load(object sender, EventArgs e) { HttpWebRequest req = null; string uri = PrimeUrl + "robot"; try { req = (HttpWebRequest)WebRequest.Create(uri); // 添加牛津API要求的身份验证请求头 req.Headers.Add("app_id", "72536848"); req.Headers.Add("app_key", "你的真实app密钥"); // 替换成你自己的密钥 // 显式指定请求方法(GET是默认值,这里写出来更清晰) req.Method = "GET"; // 读取API返回的响应内容 using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseContent = reader.ReadToEnd(); // 这里可以把responseContent反序列化成对象,或者直接输出查看结果 Response.Write(responseContent); } } } catch (WebException ex) { // 处理请求异常,比如API返回的错误信息 using (HttpWebResponse errorResponse = (HttpWebResponse)ex.Response) { using (StreamReader reader = new StreamReader(errorResponse.GetResponseStream())) { string errorMsg = reader.ReadToEnd(); Response.Write("请求出错:" + errorMsg); } } } } }
额外小提示
- 不要把
app_key硬编码在代码里,建议存在Web.config的<appSettings>节点中,用ConfigurationManager.AppSettings["OxfordAppKey"]读取,更安全。 - 如果后续调用POST类型的接口,记得设置
req.ContentType = "application/json";并写入请求体内容。
内容的提问来源于stack exchange,提问作者iamal
相关产品推荐
相关产品推荐

