2017-02-17 2 views
0

여러 명의 게시자에게 게시물 요청을하고 있습니다. 이 서버는 하나만 제외하고 모든 json을 반환합니다. 그들 중 하나는 다음과 같은 데이터를 반환합니다 : 1fe2 80b9 0800 0000 0000 0400 c3ac c2bd.C#에서 게시물 요청을하면 이상한 결과가 발생합니다.

나머지 클라이언트와 동일한 작업을 수행하는 경우 모든 서버에서 유효한 Json을 얻지 만 서버에서 한 번 수행하면 해당 종류의 데이터가 반환됩니다.

나는이 작업을 수행하려면 다음 코드를 사용합니다

public static string MakeRequest(string url, string requestBody, string methodName) 
     { 
      string result = ""; 
      using (var client = new WebClient()) 
      { 
       client.Headers[HttpRequestHeader.ContentType] = "application/json"; 
       result = client.UploadString(string.Format("{0}{1}", url, methodName), "POST", requestBody); 
      } 
      return result; 
     } 

나는이 (이전 코드)를 시도 : 그들은 때문에

public static string MakeRequestA(string url, string requestBody, string methodName) 
     { 
      byte[] postBytes  = Encoding.ASCII.GetBytes(requestBody); 

      var request  = (HttpWebRequest)WebRequest.Create(string.Format("{0}{1}", url, methodName)); 
      request.KeepAlive  = false; 
      request.ProtocolVersion = HttpVersion.Version11; 
      request.Method   = "POST"; 
      request.ContentType  = "application/json"; 
      request.Accept   = "text/plain"; 
      request.ContentLength = postBytes.Length; 

      Stream requestStream = request.GetRequestStream(); 

      requestStream.Write(postBytes, 0, postBytes.Length); 
      requestStream.Close(); 

      WebResponse response = request.GetResponse(); 
      Console.WriteLine (((HttpWebResponse)response).StatusDescription); 

      var dataStream = response.GetResponseStream(); 
      var reader = new StreamReader (dataStream); 
      string responseFromServer = reader.ReadToEnd(); 

      reader.Close(); 
      dataStream.Close(); 
      response.Close(); 
      return responseFromServer; 
     } 

난 정말 당신에게 서버 URL을 줄 수 은밀한. 왜 내가 json 대신이 데이터를 얻는 지 아무도 모른다.

+0

요청 헤더에 사용자 에이전트와 호스트를 추가해야 할 수도 있습니다. 최근에 적절한 사용자 에이전트없이 요청을 처리 할 수없는 웹 서비스로 작업했습니다. –

+0

[Fiddler] (http://www.telerik.com/fiddler) 프로파일 러를 가져와 두 경우 모두 서버로 전송 된 내용을 확인하면 차이점을 확인할 수 있습니다. – trailmax

+0

실제로 확실하지 않지만 더 많은 헤더를 추가해야 할 수도 있습니다. 목록을 보려면 https://www.soapui.org/testing-dojo/best-practices/understanding-rest-headers-and-parameters.html –

답변

0

안녕하세요, 귀하의 컴퓨터에 피들러 도구를 설치하고 그 검사와 함께 REST 클라이언트가 생성 한 요청 헤더를 확인하십시오. 그리고 .net 클라이언트가 생성 한 요청 헤더를 캡처하십시오. 그런 다음 두 요청 형식을 비교하여 솔루션을 찾으십시오.

+1

의견 섹션에서 확인하십시오. 이것은 대답으로 간주 될 수 없습니다. – Hemal

관련 문제