1

REST service1つのメソッドで 1つのリモートに 2 つの呼び出しを次々と与えています。最初の呼び出しでの値を設定accessTokenし、2 番目の要求に使用しています。

私がそれを実行しているとき、それは私にエラーを与えています

The remote server returned an error: (500) Internal Server Error.

以下はコードです。

    HttpWebRequest webRequest = null;
    HttpWebResponse webResponse = null;
    Encoding encodingObj = null;
    StreamReader streamReaderObj = null;

    string grantCode = string.Empty;
    string resultString = string.Empty;
    string accessToken = string.Empty;

    private void Instantiate()
    {            
        grantCode = HttpContext.Current.Request.QueryString["code"].ToString();
        webRequest = (HttpWebRequest)WebRequest.Create(Constants.ACCESS_TOKEN_REQUEST + "&code=" + grantCode);
        webRequest.Method = "GET";
        webRequest.ContentType = "application/json";
        webResponse = (HttpWebResponse)webRequest.GetResponse();
        encodingObj = System.Text.Encoding.GetEncoding("utf-8");
        streamReaderObj = new StreamReader(webResponse.GetResponseStream(), encodingObj);
        resultString = streamReaderObj.ReadToEnd();
        JObject parameterCollection = JObject.Parse(resultString);
        accessToken = parameterCollection["access_token"].ToString();
        //HttpContext.Current.Response.Write("<br/><br/>Code: <br/>" + grantCode);
        //HttpContext.Current.Response.Write("<br/><br/>Access Token: <br/>" + accessToken);

        webRequest = (HttpWebRequest)WebRequest.Create(Constants.RETRIEVE_CONTEXT_REQUEST + "vista-688/id/Staff01");
        webRequest.Method = "GET";
        webRequest.Accept = "application/json";
        webRequest.ContentType = "application/json";
        webRequest.Headers.Add("Authorization", "Bearer " + accessToken);
        webResponse = (HttpWebResponse)webRequest.GetResponse();
        encodingObj = System.Text.Encoding.GetEncoding("utf-8");
        streamReaderObj = new StreamReader(webResponse.GetResponseStream(), encodingObj);
        resultString = streamReaderObj.ReadToEnd();
        //HttpContext.Current.Response.Write("<br/><br/>Retrieve Context: <br/>" + resultString);
    }

これらは、構成ファイルからの完全な REST API URL です。

<add key="GrantCodeRequest" value="https://<location>/AuthorizationServices/provider/authorize?response_type=code&state=mystateid&client_id=mVisum&redirect_uri=http://localhost:1316/RetrieveContext.aspx&scope=read"/>
<add key="AccessTokenRequest" value="https://<location>/AuthorizationServices/oauth/token?client_id=mVisum&state=mystateid&scope=read&client_secret=TESTMVISUM&response_type=token&grant_type=authorization_code&redirect_uri=http://localhost:1316/RetrieveContext.aspx"/>
<add key="RetrieveContextRequest" value="http://<location>/UserContext/rest/context/user/system/"/>

値が有効な値に初期化された2番目のリクエストのみを実行している場合、accessToken2番目の呼び出しも例外なく機能します。このメソッドは、1 つのハンドラーで記述されます。

なぜこれが起こっているのか誰にも教えてもらえますか?REST Web サービスでは問題ありません。また、2 つの別個の Web 要求オブジェクトと Web 応答オブジェクトを使用してみましたが、何もうまくいきません

4

1 に答える 1

0

使ってみて

        WebClient client = new WebClient();
        client.Headers["Content-type"] = @"application/json";
        Stream data = client.OpenRead(yoururl); ;
        StreamReader reader = new StreamReader(data);
        string responseFromServer = reader.ReadToEnd();

上記は私にとってはうまくいきます。

于 2013-08-01T14:01:07.063 に答える