1

「Web サービス」へのクロスドメイン呼び出しを行おうとしています (クエリ文字列値に基づいて XML を返す単純なサイトであるためです) が、運がありません。リクエストを行うたびに、(401) Unauthorizedエラーが発生します。ただし、ブラウザにリンクを配置し、クエリ文字列を変更して結果を取得することはできるので、コンピュータからサイトにアクセスできる必要があります。以下は私が使用しようとしているコードです。誰か提案を提供できますか?

Web サービスへの呼び出しは、ページのビューからの Ajax 呼び出しで開始されます。そのコードを以下に貼り付けます。

function GetProgramDetails() {
    var searchItem = $('.searchbox').val();
    var request = $.ajax({
        type: 'POST',
        url: '@Url.Action("compSearch", "Home")',
        data:
            {
                searchFilter: searchItem,
                url: location.protocol + '//' + location.host 
            },
        dataType: 'html',
        success: function (data) {
            console.log(data);
            alert(data);
        },
        error: function (data) {
            console.log(data);
            alert("Unable to process your resquest at this time.");
        }
    });
}

これにより、以下のビューのコントローラーが呼び出されます。

    [HttpPost]
    public string compSearch(string searchFilter, string url)
    {
        string results = string.Empty;
        string URL =
            "http://quahildy01/xRMDRMA02/xrmservices/2011/OrganizationData.svc/AccountSet?$select=AccountId,Name,neu_UniqueId&$filter=startswith(Name,'" +
            searchFilter + "')";

        try
        {
            WebRequest myWebRequest = WebRequest.Create(URL);
            myWebRequest.Headers.Add("Access-Control-Allow-Origin", url);

            WebResponse myWebResponse = myWebRequest.GetResponse();
            Stream myFileStreamResult = myWebResponse.GetResponseStream();
            Encoding encoder = System.Text.Encoding.GetEncoding("utf-8");
            StreamReader readStream = new StreamReader(myFileStreamResult, encoder);

            results = readStream.ReadToEnd();
        }
        catch (Exception ex)
        {

            results = ex.InnerException.ToString();
        }

        return results;
    }
4

0 に答える 0