Acerca de las diferencias y el uso del método get y el método post en el protocolo Http
Después de consultar MSDN y escribir algunos programas, aprendí la diferencia entre el método get y el método post. El método get en realidad transmite datos a través de la dirección URL de la página web, y el lado del servidor analiza los datos de la dirección URL, mientras que el método post envía datos a través de un formulario, los datos se transmiten de forma cifrada y el servidor los recibe; la solicitud Luego analiza los datos. Desde una perspectiva de seguridad, el método de publicación es más seguro. El método de obtención puede enviar datos directamente desde el navegador, mientras que el método de publicación debe enviar el formulario desde la página web.
(2) Implementación del método get y del método post
Dicho esto, hablemos de cómo se implementan estos dos métodos.
1. Implementación VC del método get
Deje de hablar y mire directamente el código, función de biblioteca de clases estándar VC6.0 CInternetSession. Para un uso más detallado, consulte MSDN.
CInternetSession tInternet;
CStdioFile * tFile;
char tChars[2056]
memset(tChars, 0, 2056);
sprintf(tChars, "s", ".OpenURL(tChars, 1, INTERNET_FLAG_TRANSFER_ASCII, NULL, 0);
memset(tChars, 0, 2056);
tFile-gt; Read(tChars, 2056);
El hipervínculo enviado en la aplicación son los datos implementados por la aplicación, y la base de datos debe tener una respuesta del programa para recibir los datos. El programa se ha guardado en la URL.
De hecho, hay muchas formas de enviar URL y las funciones API y espaciales se pueden implementar en C Builder.
2. Implementación de métodos posteriores
(1) Todavía usando la clase CInternetSession
char chHeader[128];
char chData[128];
char tChars[128];
memset(tChars, 0, 128);
sesión de sesión de Internet; > CHttpConnection* pConnection=NULL;
CHttpFile* pFile=NULL;
INTERNET_PORT nPort=8080;
strcpy(chHeader, "Tipo de contenido: p> p>
strcpy(chHeader, "Tipo de contenido: aplicación/x-www-form-urlencoded");
strcpy(chData, "nombre de usuario= 123amp; contraseña=123amp; datos= 123456789012345" );
pConnection = session.GetHttpConnection("127.0.0.1", nPort);
pFile = pConnection-gt; OpenRequest(CHttpConnection:: HTTP_VERB_POST, "/app"
pFile-gt; SendRequest(chHeader, (DWORD)strlen(chHeader), (LPVOID *)chHeader) (LPVOID *)chData, strlen(chData)); pFileg-t; Read(tChars, 128);
session.Close();
(2) Utilice el protocolo TCP/IP para transmitir datos
SOCKADDR_ EN saServer;
LPHOSTENT lphostent;
WSADATA wsadata;
SOCKET hsocket
int nRet; const char* host_name="127.0.1";
char* req=
"POST Abrir = InternetOpen("Abrir lt; 0 )
{
MessageBox("No se puede abrir la página");
}
HINTERNET hInternetConnect = InternetConnect(hInternetOpen,
"127.0. 0,1",
8080,
NULL,
"HTTP/1.1",
INTERNET_SERVICE_HTTP,
0,
0);
if(hInternetConnect lt; 0)
{
MessageBox("No se puede conectar a
el servidor");
}
HINTERNET hHttpOpenRequest = HttpOpenRequest(hInternetConnect,
"POST",
"/IFCS/IMEICheck ",
"HTTP/1.1",
NULL,
0,
INTERNET_FLAG_RELOAD,
0 );
if(hHttpOpenRequest lt; 0 )
{
MessageBox("Error de solicitud al abrir ");
} p>
char chData[128] = "nombre de usuario=123amp; contraseña=123amp; datos=123456789000001";
DWORD len = strlen(chData);
int bRet = HttpSendRequest(hHttpOpenRequest,
"Tipo de contenido: aplicación/x-www-form-urlencoded\r\n",
strlen("Tipo de contenido.aplicación/x-www -form-urlencoded\r\n"),
(LPVOID *)chData,
len);
char tChars[128];
memset(tChars, 0, 128);
DWORD dwReadLen;
InternetReadFile(hHttpOpenRequest, (LPVOID *)tChars, 128, y dwReadLen
if(dwReadLen gt; 0)
{
MessageBox(tChars);
}
else
{
MessageBox("Error al leer la respuesta");
}
InternetCloseHandle( hHttpOpenRequest
InternetCloseHandle); (hInternetConnect);
InternetCloseHandle(hInternetOpen);