[Delphi] Проблема с символом "&" в post-запросе

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by frxmaster, 28 Jan 2010.

  1. frxmaster

    frxmaster New Member

    Joined:
    28 Dec 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    При разработке программы столкнулись с такой проблемой:

    Когда в пост-запросе передаётся ссылка такого вида:
    http://mysite.ru/go?id=1775497&ssid=gyurtnrutk&midd=gfgfg

    символ & распознается как дополнительный параметр в пост запросе и все что после него отправляется отдельно

    есть ли какой-то метод корректно передать ссылку?
     
  2. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Да ладно?

    Чем отправляешь? Если на винсоках, то запрос будет выглядить так:
    Code:
    POST /go?id=1775497&ssid=gyurtnrutk&midd=gfgfg HTTP/1.1
    Host: mysite.ru
    ....
    ....
    ....
    postvalue1=postkey1&postvalue2=postkey2
    
     
  3. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    Значения параметров POST запроса должны передаваться в URL кодировке. А в ней символ амперсанда заменяется на %26
     
  4. bmp152

    bmp152 New Member

    Joined:
    25 May 2009
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    через idhttp
    Code:
    [B]var[/B]
      http_client : tidhttp;
      params : :tstringlist;
      message : string;
    [B]begin[/B]
      message := 'http://domen.ru/12345[B]&[/B]6789';
      params.add('Message=' + message);
      http_client.Post('URL', params);
    [B]end;[/B]
    
    При этом постятся 2 параметра:
    Code:
    Message=http://domen.ru/12345
    6789=
    
    Хотя должно быть так:
    Code:
    Message=http://domen.ru/12345&6789
    
    Пробовали функцию TIdURI.URLEncode, не помогло
    Попробовал руками заменить, проходит нормально но ссылка уже получается битой почемуто
     
  5. TRX.new

    TRX.new Member

    Joined:
    27 Apr 2009
    Messages:
    151
    Likes Received:
    21
    Reputations:
    0
    поставь перед & знак ^ .. может быть поможет...
     
  6. bmp152

    bmp152 New Member

    Joined:
    25 May 2009
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    Не помогает, тоже самое - все что после & постится как другой параметр
     
  7. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Что значит битой!?
    Приведи реальный пример, на реальном сайте.
     
  8. narik_

    narik_ Member

    Joined:
    5 Jun 2009
    Messages:
    0
    Likes Received:
    30
    Reputations:
    0
    Ты через компоненту шлеш запрос ? если да то там есть опция передавать знак как знак и ли его аски код.
     
  9. bmp152

    bmp152 New Member

    Joined:
    25 May 2009
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    Например http://tinyurl.com/62cvp&random - норм редиректит
    http://tinyurl.com/62cvp%26random - не редиректит

    Да, нашел, спасиб.


    Всем спасибо, решили проблему
     
    #9 bmp152, 29 Jan 2010
    Last edited: 29 Jan 2010