Pergunta

Desculpas pela minha pergunta mais longa sobre isso. Estou tentando interagir com um front -end PHP para um banco de dados MySQL no root (uma estrutura CERN em C ++ para análise de física de alta energia). Para começar, tentei fazer com que essa interface PHP seja bem wget e curl Primeiro porque estou mais familiarizado com eles. O seguinte comando funciona:

wget --post-data "hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases;" http://some.host.edu/log/log_query_matlab.php

Os resultados são:

database1

database2

Isso é bom. Se eu deixar de fora o --post-data Então eu recebo o resultado:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 6
i'm dead! Access denied for user 'admin'@'localhost' (using password: NO) 
Warning: mysql_query() [function.mysql-query]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 29

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /log/log_query_matlab.php on line 29

Tenho acesso ao script PHP (somente leitura), mas o erro em si não é muito importante. O que importa que, usando root, eu uso uma função chamada como socket.SendRaw(message, message.Length()) (o soquete é um TSocket) e isso me dá o mesmo "erro" que wget Sem a chave de dados post, se minha "mensagem" for

"POST http://some.host.edu/log/log_query_matlab.php?hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases"

Isso pode ser em vão, mas alguém sabe uma maneira de formatar a "mensagem" que inclui algo que é equivalente ao --post-data trocar. Ou existe uma maneira padrão de formatar solicitações de postagem em uma única linha (eu vi material multi-linha. Está certo?) Desculpe, eu não tenho noção!

Ps. A consulta MySQL é show databases Mas o espaço foi substituído por _spazio_, Italiano para espaço. O autor da interface DB e PHP exige (e várias substituições para símbolos), mas alguém já viu isso antes? Tentando solucionar problemas, isso foi terrível!

Foi útil?

Solução

O "Liner" correto (tinha que ser multilina) era:

POST http://some.host.edu/log/log_query_matlab.php HTTP/1.1
Host: some.host.edu
Content-Type: application/x-www-form-urlencoded
Content-Length: 73

hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show databases

O final de cada linha tem \r\n. A lacuna após o comprimento do conteúdo tem dois conjuntos deles.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top