WebRequest는 웹 사이트와 상호 작용하는 데 적합한 C# 도구입니까?

StackOverflow https://stackoverflow.com/questions/91275

  •  01-07-2019
  •  | 
  •  

문제

저는 POST 및 json 형식을 사용하여 웹 사이트와 데이터를 보내고 받는 데 필요한 C#으로 작은 도구를 작성하고 있습니다.이전에 C#(또는 실제로는 다른 언어)에서 이와 같은 작업을 수행한 적이 없으므로 시작하는 데 유용한 정보를 찾는 데 어려움을 겪고 있습니다.

C#의 WebRequest 클래스에 대한 정보를 찾았습니다(특히 여기) 하지만 본격적으로 시작하기 전에 이것이 작업에 적합한 도구인지 궁금했습니다.

데이터를 json 형식으로 변환하는 도구는 많이 찾았지만 그 외에는 많지 않았습니다. 따라서 막다른 골목에 부딪힐 경우를 대비해 여기에 있는 모든 정보가 정말 도움이 될 것입니다.

도움이 되었습니까?

해결책

WebRequest, 더 구체적으로 HttpWebRequest 클래스는 달성하려는 목표를 위한 좋은 출발점입니다.요청을 생성하려면 WebRequest.Create를 사용하고 생성된 요청을 HttpWebRequest로 캐스팅하여 실제로 사용합니다.그런 다음 게시물 데이터를 생성하고 다음과 같이 스트림으로 보냅니다.

HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://mysite.com/index.php");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
string postData = "var=value1&var2=value2";
req.ContentLength = postData.Length;

StreamWriter stOut = new
StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(postData);
stOut.Close();

마찬가지로 결과 응답 스트림을 읽고 필요한 모든 작업을 수행할 수 있는 GetResponse 메서드를 사용하여 응답을 다시 읽을 수 있습니다.수업에 대한 자세한 정보는 다음에서 확인할 수 있습니다.

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

다른 팁

웹클라이언트 때로는 다음보다 사용하기가 더 쉽습니다. 웹요청.당신은 그것을 살펴보고 싶을 수도 있습니다.

JSON 역직렬화의 경우 다음을 살펴보고 싶을 것입니다. JavaScript직렬화기 수업.

WebClient 예:

using (WebClient client = new WebClient ())
{
    //manipulate request headers (optional)
    client.Headers.Add (HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

    //execute request and read response as string to console
    using (StreamReader reader = new StreamReader(client.OpenRead(targetUri)))
    {
        string s = reader.ReadToEnd ();
        Console.WriteLine (s);
    }
}

누군가 코드를 업데이트하려는 경우를 대비해 위키로 표시됨

웹사이트에 데이터를 게시할 때, System.Net.HttpWebRequest (WebRequest의 HTTP 관련 구현)은 완벽하게 괜찮은 솔루션입니다.SSL, 비동기 요청 및 기타 다양한 기능을 지원하며 MSDN에 잘 문서화되어 있습니다.

페이로드는 무엇이든 될 수 있습니다.JSON 형식 등의 데이터 - ContentType 속성을 서버가 기대하고 이해하는 것(대개 application/json, text/json 또는 text/x-json)으로 설정하는 한 모두 괜찮습니다.

시스템 서비스에서 HttpWebRequest를 사용할 때 발생할 수 있는 한 가지 문제는 다음과 같습니다.IE 프록시 및 자격 증명 정보를 사용하기 때문에 LOCALSYSTEM 사용자(또는 기본적으로 정기적으로 대화형으로 로그온하지 않는 모든 계정)로 실행할 때 기본 동작이 약간 이상할 수 있습니다.프록시 및 인증 속성을 다음으로 설정합니다. Nothing (또는 C# 사람들이 선호하는 대로 null, 제 생각에는) 그것을 피해야 할 것 같습니다.

저는 웹사이트와 상호작용하기 위해 WebRequest를 사용했습니다.올바른 '도구'입니다

귀하의 질문의 JSON 측면에 대해서는 언급할 수 없습니다.

현재 가장 높은 평가를 받은 답변이 도움이 되지만 JSON을 보내거나 받지는 않습니다.

다음은 보내기와 받기 모두에 JSON을 사용하는 예입니다.

웹 서비스에 json 객체를 게시하는 방법

이 문제를 해결하는 데 가장 큰 도움이 된 StackOverflow 질문은 다음과 같습니다.

ASP.net 웹 서비스와 ASP.Net 웹 클라이언트 간에 JSON을 보내고 받는 데 문제가 있습니다.

그리고 또 다른 관련 질문은 다음과 같습니다.

C#을 사용한 json 호출

인스턴스 객체를 json 형식 문자열로 변환하거나 그 반대로 변환하려면 Json.NET을 사용해 보세요.http://json.codeplex.com/

현재 프로젝트에 사용하고 있으며 배우고 작업하기 쉽고 직렬화 및 사용자 정의 유형 변환기 측면에서 유연성을 제공합니다.또한 json 입력을 쿼리하기 위한 LINQ 구문도 지원합니다.

3.5에는 jsonserializer가 내장되어 있습니다.웹 요청은 귀하가 찾고 있는 올바른 클래스입니다.

몇 가지 예:

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top