簡體   English   中英

將HttpWebRequest憑據傳遞給Oxford API

[英]Passing HttpWebRequest Credentials to Oxford API

我正在嘗試連接到Oxford Dictionaries API 當我在這段代碼中使用python時,我沒有遇到任何問題:

import requests
import json
app_id = 'my id'
app_key = 'my key'
language = 'en'
word_id = 'Ace'
url = 'https://od-api.oxforddictionaries.com:443/api/v1/entries/' + language     + '/' + word_id.lower()
r = requests.get(url, headers = {'app_id': app_id, 'app_key': app_key})
print("code {}\n".format(r.status_code))

但是在c#中我收到錯誤403使用以下代碼驗證失敗:

        HttpWebRequest req = null;
        string PrimeUrl = "https://od-api.oxforddictionaries.com:443/api/v1/entries/en/"
        string uri = PrimeUrl+word ;
        req = (HttpWebRequest)HttpWebRequest.Create(uri);
        string credentials = String.Format("{0}:{1}", uid, pwd);
        byte[] bytes = Encoding.ASCII.GetBytes(credentials);
        string base64 = Convert.ToBase64String(bytes);
        string authorization = String.Concat("Basic ", base64);
        req.Headers.Add("Authorization", authorization);
        req.Method = WebRequestMethods.Http.Get;
        req.Accept = "application/json";            
        HttpWebResponse HWR_Response = (HttpWebResponse)req.GetResponse();

我仔細檢查了id和密鑰是否正確,還試過這里建議的一切。

發布這個問題是我的最后一招。 謝謝。

這是如何正確地將您的開發人員憑據添加到請求中 - 它們是標題:

using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;

namespace OxfDictionary
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpWebRequest req = null;

            string PrimeUrl = "https://od-api.oxforddictionaries.com:443/api/v1/entries/en/";
            string uri = PrimeUrl + "robot";
            req = (HttpWebRequest)HttpWebRequest.Create(uri);

            //These are not network credentials, just custom headers
            req.Headers.Add("app_id", "5a......3");
            req.Headers.Add("app_key", "d12............1a0");

            req.Method = WebRequestMethods.Http.Get;
            req.Accept = "application/json";

            using (HttpWebResponse HWR_Response = (HttpWebResponse)req.GetResponse())
            using (Stream respStream = HWR_Response.GetResponseStream())
            using (StreamReader sr = new StreamReader(respStream, Encoding.UTF8))
            {
                string theJson = sr.ReadToEnd();
                Debug.WriteLine(theJson);
                Console.WriteLine(theJson);
            }
            Console.ReadKey();
        }
    }
}

結果是:

 {
        "metadata": {
            "provider": "Oxford University Press"
        },
        "results": [
            {
                "id": "robot",
                "language": "en",
                "lexicalEntries": [
                    {
                        "entries": [
                            {
                                "etymologies": [
                                    "from Czech, from robota forced labour. The term was coined in K. Čapek's play R.U.R. Rossum's Universal Robots (1920)"
                                ],
                                "grammaticalFeatures": [
                                    {
                                        "text": "Singular",
                                        "type": "Number"
                                    }
                                ],
                                "senses": [
                                    {
                                        "definitions": [
                                            "a machine capable of carrying out a complex series of actions automatically, especially one programmable by a computer:"
                                        ],
                                        "domains": [
                                            "Electronics"
                                        ],
                                        "examples": [
                                            {
                                                "text": "a robot arm"
                                            },
                                            {
                                                "text": "half of all American robots are making cars or trucks"
                                            }
                                        ],
                                        "id": "m_en_gb0714510.001",
                                        "subsenses": [
                                            {
                                                "definitions": [
                                                    "(especially in science fiction) a machine resembling a human being and able to replicate certain human movements and functions automatically:"
                                                ],
                                                "examples": [
                                                    {
                                                        "text": "the robot closed the door behind us"
                                                    }
                                                ],
                                                "id": "m_en_gb0714510.002"
                                            },
                                            {
                                                "definitions": [
                                                    "a person who behaves in a mechanical or unemotional manner:"
                                                ],
                                                "examples": [
                                                    {
                                                        "text": "public servants are not expected to be mindless robots"
                                                    }
                                                ],
                                                "id": "m_en_gb0714510.003"
                                            }
                                        ]
                                    },
                                    {
                                        "crossReferenceMarkers": [
                                            "another term for crawler (in the computing sense)"
                                        ],
                                        "crossReferences": [
                                            {
                                                "id": "crawler",
                                                "text": "crawler",
                                                "type": "see also"
                                            }
                                        ],
                                        "domains": [
                                            "Computing"
                                        ],
                                        "id": "m_en_gb0714510.004"
                                    },
                                    {
                                        "definitions": [
                                            "a set of automatic traffic lights:"
                                        ],
                                        "domains": [
                                            "Motoring"
                                        ],
                                        "examples": [
                                            {
                                                "text": "waiting at a robot I caught the eye of a young woman"
                                            }
                                        ],
                                        "id": "m_en_gb0714510.005",
                                        "regions": [
                                            "South African"
                                        ]
                                    }
                                ]
                            }
                        ],
                        "language": "en",
                        "lexicalCategory": "Noun",
                        "pronunciations": [
                            {
                                "audioFile": "http://audio.oxforddictionaries.com/en/mp3/robot_gb_1.mp3",
                                "dialects": [
                                    "British English"
                                ],
                                "phoneticNotation": "IPA",
                                "phoneticSpelling": "ˈrəʊbɒt"
                            }
                        ],
                        "text": "robot"
                    }
                ],
                "type": "headword",
                "word": "robot"
            }
        ]
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM