Ошибка при регистрации

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Andrew_qb, 7 Jan 2013.

  1. Andrew_qb

    Andrew_qb New Member

    Joined:
    1 Jul 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Code:
    using (var req = new HttpRequest())
                {
                    req["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                    req.Cookies = cookies;
                    req["DNT"] = "1";
                    req.Referer = "http://www.hornymatches.com/join.php";
                    req.UserAgent = agent;
                    req.ContentType = "application/x-www-form-urlencoded";
                    StringDictionary part = new StringDictionary();
                    part["action"] = "signup";
                    part["bday_day2"] = "2";
                    part["bday_month2"] = "4";
                    part["bday_year2"] = "1987";
                    part["f_city"] = "California, Los Angeles (90045)";
                    part["f_country_id"] = "0224";
                    part["f_self_description"] = description;//заполняется из файла
                    part["f_title"] = title;//заполняется из файла
                    part["f_what_for_id"] = "3";
                    part["f_what_is_id"] = "2";
                    part["f_what_want_id"] = "1";
                    part["f_world_id"] = "2767329";
                    part["step"] = "2";
                    string text = req.Post("http://www.hornymatches.com/join.php", part).ToString(); //отправляю пост запрос и получаю ошибку
                    using (var writer = new StreamWriter("finish.html"))
                        writer.Write(text);
                }
    
    использовал xNet библиотеку
    Регистрация происходит в два этапа на первом вводятся имя, мыло, возраст и капча с этим разобрался на втором, указываю город, пол, кем интересуюсь, для чего(секс, гроуп секс и т.д.), коротко о себе и подробнее о себе и вот тут то возникает ошибка и я не могу понять из-за чего она может быть, т.к. все данные отправляются, на тот адрес на который надо хотя пишет что -

    "Не удалось соединиться с HTTP-сервером 'www.hornymatches.comfreejoincomplete.php'."

    А вот более полный лог "xNet.Net.HttpException: Не удалось соединиться с HTTP-сервером 'www.hornymatches.comfreejoincomplete.php'. ---> System.Net.Sockets.SocketException: Запрошенное имя верно, но данные запрошенного типа не найдены
    в System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
    в System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult)
    в xNet.Net.HttpRequest.<>c__DisplayClass4.<CreateTcpConnection>b__0(IAsyncResult ar)
    --- Конец трассировки внутреннего стека исключений ---
    в xNet.Net.HttpRequest.CreateTcpConnection(String host, Int32 port)
    в xNet.Net.HttpRequest.CreateConnection()
    в xNet.Net.HttpRequest.SendRequest(HttpMethod method, Uri address, HttpContent content, Boolean reconnection)
    в xNet.Net.HttpRequest.SendRequest(HttpMethod method, Uri address, HttpContent content, Boolean reconnection)
    в xNet.Net.HttpRequest.Raw(HttpMethod method, Uri address, StringDictionary urlParams, Object messageBody)
    в xNet.Net.HttpRequest.Raw(HttpMethod method, String address, StringDictionary urlParams, Object messageBody)
    в xNet.Net.HttpRequest.Post(String address, StringDictionary reqParams)
    в Reg_HornyMatches.Form1.start_page() в c:\Users\Abc\Documents\Visual Studio 2012\Projects\Reg_HornyMatches\Reg_HornyMatches\Form1.cs:строка 569" - эта строка
    Code:
    string text = req.Post("http://www.hornymatches.com/join.php", part).ToString();
    Вопрос в следующем из-за чего возникает ошибка у кого какие предположения?
     
    #1 Andrew_qb, 7 Jan 2013
    Last edited: 8 Jan 2013
  2. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Ну написано же все четко, доступно и понятно:
    удаляется слеш, отделяющий имя хоста от URL‐пути. Попробуй передавать Uri вместо string в метод POST, или поищи где там баг и со слешем и пофикси его.
     
  3. Andrew_qb

    Andrew_qb New Member

    Joined:
    1 Jul 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    В том то вся и заморочка, что пост запрос отправляется на другой адрес, внимательнее код посмотрите
    Code:
    string text = req.Post("http://www.hornymatches.com/join.php", part).ToString();
     
  4. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Я прекрасно увидел с первого раза куда отправляется запрос. Прочитайте внимательней что я написал выше, можно несколько раз если с первого не понятно, там есть ответ на проблему.
     
  5. Andrew_qb

    Andrew_qb New Member

    Joined:
    1 Jul 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    хах как мне фиксить этот адрес, если я на него, ни чего не отправляю???
    Я этот момент не совсем понимаю.
     
  6. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Возьмите исходники либы xNet, найдите метод HttpRequest.Post - посмотрите где он берет строку и как он ее разделяет и исправьте проблему. Одна из перегрузок этого метода принимает Uri в качестве аргумента с адресом, возможно там нет этой проблемы. Капиш?
     
  7. Andrew_qb

    Andrew_qb New Member

    Joined:
    1 Jul 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    нон капишь, вот смотри если на других сайтах мне удавалось регаться используя эту либу, то наверняка она рабочая, разве не так?
    Но я смотрел и там используются обычные классы webrequest и webresponse, так что врядле там ошибка, хотя я сперва тоже грешил на либу но она рабочая, вот и сижу не понимаю как может возникать ошибка с адресом которого нету в самом коде, что то немыслимое.
     
  8. Andrew_qb

    Andrew_qb New Member

    Joined:
    1 Jul 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Всё удалось решить проблему

    Code:
     
    using (var req = new HttpRequest())
                {
                    //req.Proxy = !(this.ProxyType == "4") ? (ProxyClient)Socks5ProxyClient.Parse(SocksProxy) : (ProxyClient)Socks4ProxyClient.Parse(SocksProxy);
                    req["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                    req.Cookies = cookies;
                    req["DNT"] = "1";
                    req.Referer = "http://www.hornymatches.com/join.php";
                    req.UserAgent = agent;
                    req.ContentType = "application/x-www-form-urlencoded";
                    StringDictionary part = new StringDictionary();
                    part["action"] = "signup";
                    part["bday_day2"] = day;
                    part["bday_month2"] = month;
                    part["bday_year2"] = years;
                    part["f_city"] = "California,+Los+Angeles+(90045)";
                    part["f_country_id"] = "0224";
                    part["f_self_description"] = description;
                    part["f_title"] = title;
                    part["f_what_for_id"] = "3";
                    part["f_what_is_id"] = "2";
                    part["f_what_want_id"] = "1";
                    part["f_world_id"] = "2767329";
                    part["step"] = "2";
                    try
                    {
                        string text = req.Post("http://www.hornymatches.com/join.php", part).ToString();
                    }
    
                    catch
                    {
                        using (var req2 = new HttpRequest())
                        {
                            req2["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                            req2.Cookies = cookies;
                            req2["DNT"] = "1";
                            req2.Referer = "http://www.hornymatches.com/join.php";
                            req2.UserAgent = agent;
                            string text = req2.Get("http://www.hornymatches.com/freejoincomplete.php").ToString();
                            using (var writer = new StreamWriter("finish.html"))
                                writer.Write(text);
                        }
                    }
                }
    
    Всего навсего нужно было в try отловить ошибку и в catch отправить get запорс
    Code:
    string text = req2.Get("http://www.hornymatches.com/freejoincomplete.php").ToString();
     
    #8 Andrew_qb, 8 Jan 2013
    Last edited: 8 Jan 2013
  9. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Значит не то смотрели, там НЕ используются "обычные классы webrequest и webresponse".
    Судя по всему сервер отдает перенаправления с не правильным Location или сама библиотека не корректно его обрабатывает.
     
  10. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Проблема была в том, что сервер возвращал адрес странички без слэша, а моя библиотека ожидает, что слэш обязательно будет. В версии 2.3.1 это будет исправлено.