Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida [cs.socket]


ZueRa

Pergunta

Pessoal, estou em dúvida em relação ao Cs.Socket, porque ele não retorna o resultado que eu queria no 'OnRead'.

Ele faz o seguinte: o usuário digita a palavra que ele quer procurar, ai o ClientServer manda o comando para o site. Até aqui tudo bem...

Porém o resultado que eu queria seriam os sites (como numa lista TXT), dispostos +/- dessa forma em um TMemo:

www.site1.com.br

www.site2.com.br

como se fosse um "google" entendem ?

Porém ele retorna isso:

HTTP/1.1 400 Bad Request

Content-Type: text/html

Date: Sat, 05 Aug 2006 04:00:52 GMT

Connection: close

Content-Length: 35

<h1>Bad Request (Invalid Verb)</h1>

*** Código do lugar que eu acho que está errado

procedure TFprincipal.CsConnect(Sender: TObject; Socket: TCustomWinSocket);
var
  pt:string;
begin
  pt:='/myftp/index.php?que=';
  Cs.Socket.SendText(Cs.Host + pt + Edit1.Text + chr(13)+chr(10));
end;

procedure TFprincipal.BtokClick(Sender: TObject);
begin
  Cs.Host:='www.site.com;
  Cs.Port:=80;
  Cs.ClientType:=ctNonBlocking;
  Cs.Active:=TRUE;
end;

Alguém pod m ajudar ?

Grato!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Nunca usei este componente, mas experimente fazer:

Cs.Socket.SendText('GET ' + pt + Edit1.Text + ' HTTP/1.1' + chr(13)+chr(10) + 'Host: ' + Cs.Host + chr(13)+chr(10) + 'Accept: */*' + chr(13)+chr(10) + 'Connection: Close' + chr(13)+chr(10)+chr(13)+chr(10));

Veja se dá certo.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Pessoal, estou em dúvida em relação ao Cs.Socket, porque ele não retorna o resultado que eu queria no 'OnRead'.

Ele faz o seguinte: o usuário digita a palavra que ele quer procurar, ai o ClientServer manda o comando para o site. Até aqui tudo bem...

Porém o resultado que eu queria seriam os sites (como numa lista TXT), dispostos +/- dessa forma em um TMemo:

www.site1.com.br

www.site2.com.br

como se fosse um "google" entendem ?

Porém ele retorna isso:

HTTP/1.1 400 Bad Request

Content-Type: text/html

Date: Sat, 05 Aug 2006 04:00:52 GMT

Connection: close

Content-Length: 35

<h1>Bad Request (Invalid Verb)</h1>

*** Código do lugar que eu acho que está errado

procedure TFprincipal.CsConnect(Sender: TObject; Socket: TCustomWinSocket);
var
  pt:string;
begin
  pt:='/myftp/index.php?que=';
  Cs.Socket.SendText(Cs.Host + pt + Edit1.Text + chr(13)+chr(10));
end;

procedure TFprincipal.BtokClick(Sender: TObject);
begin
  Cs.Host:='www.site.com;
  Cs.Port:=80;
  Cs.ClientType:=ctNonBlocking;
  Cs.Active:=TRUE;
end;

Alguém pod m ajudar ?

Grato!

PERFECTTTTTTTTTTTTTT!!!!!!!!!!!!!!!!!

Ahhhhhhhhhhhhhh... vlw vlw vlw vlw!!

muito obrigado!!!!

Demais... vlwzaum !!!!

Só que tem um porém... os sites estaum saindo dessa forma www.site.com.br<br>www.site.com.br

Como posso consertar isso ?

E novamente obrigado !!

Link para o comentário
Compartilhar em outros sites

  • 0

Adicione StrUtils na cláusula Uses e depois faça:

Memo1.Text := AnsiReplaceStr(Memo1.Text, '<br>', chr(13)+chr(10));

E você terá os <br> substituídos por quebras de linhas.

Abraços,

Graymalkin

Sim... isso consegui ^^

Agora está retornando as informações do server

HTTP/1.1 400 Bad Request

Content-Type: text/html

Date: Sat, 05 Aug 2006 04:00:52 GMT

Connection: close

Content-Length: 35

E nem consegui... dakele jeito que você m disse... =/

Link para o comentário
Compartilhar em outros sites

  • 0

Qual a primeira coisa que vem depois destas informações do servidor? Parece que não dá pra usar o "Connection: close" porque ele pode mudar de lugar. Mas, o que vem depois?

Abraços,

Graymalkin

Graymalkin tem certeza que não dá para usar o Connection: Close ? talvez dê...

A primeira coisa que vem após as informações do servidor, são os sites propriamente ditos.

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

No seu exemplo anterior o "Content-Length" vem depois do "Connection: close". Antes dos sites propriamente ditos, não haveria alguma tag (como <html>)?

Abraços,

Graymalkin

Graymalkin, não.

O exemplo acima, acho que é porque foi em um exemplo de "erro". Quando ainda o programa não funcionava, até você ajudar.

Mas agora o "Connection: Close" está sempre vindo no final.

E respondendo sua pergunta, não há nenhuma TAG <html> ou outras antes dos sites.

Grato, abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, então você pode tentar aquela dica que eu te passei (do Pos() e do RightStr()), apenas verifique se é "Connection: Close" ou "Connection: close", para poder procurar a string certa.

Abraços,

Graymalkin

Sim... estava procurando ela, porém, quando você me passou, eu nçao estava no meu PC.

Por infelicidade, esse PC não tinha salvado os logs.

Se puder reescrever, agradeço.

Grato,

ZueRa.

Link para o comentário
Compartilhar em outros sites

  • 0

Se me lembro bem, era isso:

posicao := Pos('Connection: close', memo1.text);
memo1.text := RightStr(memo1.text, Length(memo1.text)-posicao);

É provável que você vá ter que subtrair o tamanho de 'Connection: close' para obter os dados inclusive sem essa linha, mas faça o teste com o código acima.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...