문제

이것은 나를 미쳤고 공을 떨어 뜨리는 곳을 알 수 없습니다. 나는 Googlemonsta를 통해 발견 된 몇 가지 예를 따랐다. 내가 멍청한 곳에 대한 포인터는 크게 적용됩니다.

        var writer = new StringWriter();
        param = "location=" + Server.UrlEncode(param);
        byte[] paramStream = Encoding.ASCII.GetBytes(param + "&param2=value");
        var URL = "http://www.somesite.com";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2";
        request.ContentLength = paramStream.Length;
        using( var stream = request.GetRequestStream())
        {
            stream.Write(paramStream, 0, paramStream.Length);
        }

        var response = request.GetResponse();

        string result;
        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            result = sr.ReadToEnd();
        }

감사!

편집하다: 사이트에 부딪히는 것을 알 수있는 한 (HTML을 다시 받고 있습니다) 매개 변수는 밀리지 않습니다. 나는 기본적으로 값이 성공적으로 나타날 곳을 얻고 있습니다. 나는 첫 번째를 제거하려고 시도했지만 아무데도 가지 않았다.

편집하다: 변경 사항을 반영하기위한 편집 된 코드.

도움이 되었습니까?

해결책

아마도 첫 번째 매개 변수의 시작에서 &를 제거 할 수 있습니까? 그 외에는 기본적으로 괜찮아 보입니다. (실제 코드에서 매개 변수 이름을 확인하십시오 - 샘플에 "매개 변수"가있는 곳에는 거의 "매개 변수"여야합니다. 그러나 실제 코드가 어떻게 보이는지 또는 실제 사이트가 기대하는 바를 알 수 없습니다.)

실제로 무슨 일이 일어나고 있는지에 대한 자세한 정보를 제공하십시오. 우리는 그것이 작동하지 않는다는 것을 알고 있지만 가능한 고장 모드가 많이 있습니다. :)

한 가지 추가적인 생각이 발생합니다. 콘텐츠 길이를 지정하지 않았습니다. 이것이 자동으로 채워 졌는지 잘 모르겠습니다. WebRequest. 사용 가치가 있습니다 Wireshark 아웃 바운드 요청에 존재하는지 확인하려면

일반적인 관행으로, 당신은 WebResponse, 그리고 당신은 전화 할 필요가 없습니다 Close 이미 가지고 있다면 using 응답 스트림에 대한 명령문 :

string result;
using (WebResponse response = request.GetResponse())
{
    using (var sr = new StreamReader(response.GetResponseStream()))
    {
        result = sr.ReadToEnd();
    }
}

다른 팁

게시물에 대한 모든 가치가 필요합니까? 한 번은 다음과 같은 형태의 숨겨진 입력 필드가있는 경우가있었습니다.

<input name="action" type="hidden" id="action" value="login">

그리고 나는 그것을 다음과 같이 매개 변수로 공급해야했다.

&action=login

양식에서 아무것도 놓치지 않았는지 확인하십시오.

편집하다: 한 가지 더 : 나는 단지 내가이 일을 한 곳에서 내 코드를 다시 보았고,이 줄에도 다음과 같은 것을 알았습니다.

request.ContentLength = bytes.Length;

필요한지 확실하지 않지만 길이를 설정하지 않았다는 것을 알았습니다.

매개 변수 이후 캐리지 리턴/새 라인만큼 간단하지 않습니까? 인터넷에서 HTTP의 문서를 보면 나중에 빈 줄이 필요합니다.

(웹 서버에 수동으로 텔넷 팅하고 요청을 붙여 넣는 것이 좋습니다.)

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