2014-04-08 3 views
0

Random.org에서 숫자를 가져 오는 데 문제가 있습니다. 나는 그들의 API를 따르고 있으며 요청을 올바르게 구성했다고 나는 믿는다. 여기에 요청 코드는 다음과 같습니다MVC 4의 Random.org에서 AJAX 사용

  1. 내가 contentType: "application/json; charset=utf-8" 다음 기본 유형이 jQuery를 API 문서 당 "application/x-www-form-urlencoded; charset=UTF-8"입니다 포함하지 않는 경우 다음과 같이

    self.GetResults = function() { 
          $.ajax({ 
           url: 'https://api.random.org/json-rpc/1/invoke', 
           dataType: "json", 
           contentType: "application/json-rpc; charset=utf-8", 
           type: 'POST', 
           data: { 
            "jsonrpc": "2.0", 
            "method": "generateIntegers", 
            "params": { 
             "apiKey": "Get-a-free-one-at-the-site", 
             "n": 1, 
             "min": 1, 
             "max": 20 
            }, 
            "id": 1 
           } 
    
          }) 
          .done(function (data, status, request) 
          { 
           alert("Success! " + data[0]); 
          }) 
          .fail(function (request, status, error) 
          { 
           alert("Failed " + error); 
          }); 
         } 
    

    오전 데 문제가 있습니다. Random.org에서는 API에서 JSON 요청 (application/json-rpc은 특별히 필요하지만 application/json은 허용)을 요구합니다. 따라서 응답에 구문 분석 오류가 발생합니다.

  2. 위에서 언급 한 콘텐츠 형식을 포함하면 "요청 헤더 필드 Content-Type을 Access-Control-Allow-Headers에서 허용하지 않습니다."라는 오류 메시지가 나타납니다. 이 게시물 https://stackoverflow.com/a/12413863/981202에서

    <httpProtocol> 
        <customHeaders> 
        <add name="Access-Control-Allow-Origin" value="*" /> 
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> 
        </customHeaders> 
    </httpProtocol> 
    

    하지만, 운이 없었을 :

나는 다음과 같이 요청 헤더를 허용하도록 Web.config의 코드를 추가하기 위해 노력했다.

는 또한 다음과 같이 Global.asax에 수정 시도했다 :

protected void Application_PreSendRequestHeaders(object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.Headers.Remove("Access-Control-Allow-Headers"); 
} 
다른 스택 오버플로 포스트 (I 링크가없는)에서와 같이

하지만, 그 중 하나가 그것을 할 것 같지 않았다 . 명확성을 위해 Application_Start() 함수 뒤에이 함수를 추가했습니다.

내가 왜 Random 클래스를 사용하지 않는지 궁금 할 것입니다. 그 이유는 Random.org를 운동으로 사용하고 싶기 때문입니다. 나는이 문제에 대한 해결책을 찾고 싶습니다. 이전에는 C# Random 클래스가 제대로 작동하지 않는다는 데이터가 있었지만 수정되어 데이터가 제거되었습니다. 네, Random 클래스는 옵션입니다. 비록 제가 언급 했었지만,이 문제에 대한 해결책을 찾고 싶습니다.

+0

random.org에서 읽은 문서에 연결할 수 있습니까? 나는 http://www.random.org/clients/http/을보고 있는데, 내가 본 것에 기초하여, 다음 URL을 요청하면된다 : http://www.random.org/정수 /? num = 1 & min = 1 & max = 20 & col = 1 & base = 10 & format = plain & rnd = new. 또한 System.Random이 진정으로 무작위가 아니더라도 수만 건의 시련 중에서 그보다 더 좋은 배포판을 볼 수 있습니다. – pmcoltrane

+0

당신은 C# random 클래스를 구현 한 곳을 보여줄 수 있습니까? 내 자신의 테스트를 실행하면 동일한 데이터를 사용하여 자신보다 훨씬 직선을 만들어냅니다. – Jonesopolis

+0

@ pmcoltrane : 제가 읽고있는 Random.org 문서는 다음과 같습니다 : https://api.random.org/json-rpc/1/ 구체적으로 여기 : https://api.random.org/json-rpc/1/introduction 및 here (generateIntegers 아래 : https://api.random.org/json-rpc/1/basic – admiral142

답변

0
<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> 
    </customHeaders> 
</httpProtocol> 

이 코드를 web.config에 추가했습니다. 처음에는 <configuration> 노드에 넣었지만 작동하지 않았습니다. 그런 다음 <configuration> 노드 내에있는 <system.webServer> 내에 있어야한다는 것을 알았습니다. 일단 거기에 넣으면 효과가 있었고 다시 언급 한 오류를받지 못했습니다.