|
You last visited: Today at 08:55
Advertisement
[C++] Http Request mag nicht funktionieren
Discussion on [C++] Http Request mag nicht funktionieren within the C/C++ forum part of the Coders Den category.
03/02/2010, 18:13
|
#1
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
[C++] Http Request mag nicht funktionieren [Gelöst]
Edit :
Sorry ich war wohl etwas zu schnell ...
Mein Firewall hatte geblockt und deswegen bekam ich auch nie eine Antwort vom Server .
Der Code hat also gepasst (ich werde den post jetzt nicht löschen , da vielleicht einmal die Frage auftaucht wie man Http-Requests mit C++ machen kann)
Aber der Thread kann geclosed werden , hoffentlich reicht eine Entschuldigung an die Mods , um mir zu verzeihen 
Post :
Wenn ich mein Code ausführen lasse , dann kommt zwar kein Fehler oder ähnliches , aber ich bekomme auch keine Antwort vom Server .
Code:
Code:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
const int BUFFER_SIZE = 65535;
u_long dns(const char *host){
struct hostent *hp;
u_long host_ip;
host_ip = inet_addr(host);
if(host_ip == INADDR_NONE){
hp = gethostbyname(host);
if(!hp){
return 0;
}else{
host_ip = *(u_long *)hp->h_addr;
}
}
return host_ip;
}
char * HTTPRequest(const char* server, int port, char * request)
{
WSADATA w;
int res = WSAStartup(MAKEWORD(2,0), &w);
#ifdef DEBUG
if(res != 0)
{
printf("Winsock 2 konnte nicht gestartet werden!\n");
}
else
{
printf("Winsock 2 gestartet!\n");
}
#endif
int Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
#ifdef DEBUG
if(Socket == -1)
{
printf("Socket konnte nicht erstellt werden!\n");
}
else
{
printf("Socket wurde erstellt!\n");
}
#endif
u_long ip = dns(server);
SOCKADDR_IN service;
service.sin_family = AF_INET;
service.sin_port = htons(port);
service.sin_addr.s_addr = ip;
res = connect(Socket, (SOCKADDR *)(&service), sizeof(service));
#ifdef DEBUG
if(res == -1)
{
printf("Verbindung fehlgeschlagen!\n");
}
else
{
printf("Verbindung erfolgreich!\n");
}
#endif
res = send(Socket, request, strlen(request), 0);
char *buffer = (char *) malloc(BUFFER_SIZE);
res = recv(Socket, buffer, sizeof(buffer) - 1, 0);
buffer[res] = '\0';
WSACleanup();
return buffer;
}
int main()
{
char request[] =
"GET /search?hl=de&q=http+request&btnG=Google-Suche&meta= HTTP/1.1\r\n"
"User-Agent: dein Browser\r\n"
"Host: www.google.de\r\n"
"Accept: */*\r\n"
"Accept-Encoding: text/html\r\n\r\n";
char * temp = HTTPRequest("www.google.de", 80, request);
puts(temp);
free(temp);
system("PAUSE");
}
Meiner Meinung nach ist alles richtig , aber irgendetwas muss falsch sein .
Am packet liegt es nicht , denn ich habe es auch schon mit etlichen anderen Packets/Seiten probiert ...
Btw. der Code ist für wxDevC++
|
|
|
03/02/2010, 22:44
|
#2
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Wenn keine Fehler beim kompilieren kommen, keine Fehler zur Laufzeit erscheinen, kann es nur an dem Server liegen, oder an deiner Anfrage.
Der erste Link ist ein gutes Tut zum Thema Sockets, das auch u.a. das HTTP-Protokoll behandelt, vllt. das mal durchlesen und der zweite Link ist dafür da, wenn alle Stricke reißen:
Quote:
|
curl is a command line tool for transferring data with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.
|
|
|
|
03/03/2010, 18:21
|
#3
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by xNopex
Wenn keine Fehler beim kompilieren kommen, keine Fehler zur Laufzeit erscheinen, kann es nur an dem Server liegen, oder an deiner Anfrage.
Der erste Link ist ein gutes Tut zum Thema Sockets, das auch u.a. das HTTP-Protokoll behandelt, vllt. das mal durchlesen und der zweite Link ist dafür da, wenn alle Stricke reißen:
|
Da ich schon mehrere Packetbots (vorerst nur mit AutoIt) gemacht habe und es auch mit verschiedenen Seiten/Packets probiert habe , sollte es nicht an dem packet liegen .
Den ersten Link kenne ich bereits ,aber ich brauche kein Tutorial dazu wie Http funktioniert oder wie TCP funktioniert (weiß ich ja bereits von AutoIt) .
Den 2. Link will ich wirklich nur im äußersten Notfall verwenden , da ich mir selbst eine kleine Klasse schreiben wollte ...
Trotzdem danke für deinen Versuch mir zu helfen
|
|
|
03/03/2010, 18:36
|
#4
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Ich hab das ganze mal C++ vernünftig umgeschrieben und bei mir funktioniert folgender Code:
Code:
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
const int BUFFER_SIZE = 65535;
unsigned long GetIP( string host)
{
struct hostent* hp;
unsigned long host_ip;
host_ip = inet_addr( host.c_str() );
if( host_ip == INADDR_NONE )
{
hp = gethostbyname( host.c_str() );
if( !hp )
{
return 0;
}else
{
host_ip = *(unsigned long *)hp->h_addr;
}
}
return host_ip;
}
string HTTPRequest( string server, int port, string request)
{
WSADATA w;
int res = WSAStartup( MAKEWORD( 2,0 ), &w );
if( res != 0 )
{
cout << "Winsock 2 konnte nicht gestartet werden!\n";
cin.get();
return "fail";
}
else
{
cout << "Winsock 2 gestartet!\n";
}
SOCKET sSocket = socket( AF_INET, SOCK_STREAM, 0 );
if( sSocket == INVALID_SOCKET)
{
cout << "Socket konnte nicht erstellt werden!\n";
cin.get();
return "fail";
}
else
{
cout << "Socket wurde erstellt!\n";
}
unsigned long ip = GetIP( server );
SOCKADDR_IN service;
memset( &service, 0, sizeof( SOCKADDR_IN ) );
service.sin_family = AF_INET;
service.sin_port = htons( port );
service.sin_addr.s_addr = ip;
res = connect( sSocket, (SOCKADDR *)(&service), sizeof( SOCKADDR ) );
if( res == SOCKET_ERROR )
{
cout << "Verbindung fehlgeschlagen!\n";
cin.get();
return "fail";
}
else
{
cout << "Verbindung erfolgreich!\n";
}
res = send( sSocket, request.c_str(), request.size(), 0 );
char buffer[BUFFER_SIZE];
res = recv( sSocket, buffer, BUFFER_SIZE-1, 0);
buffer[res] = '\0';
WSACleanup();
string out = buffer;
return out;
}
int main()
{
string request =
"GET /search?hl=de&q=http+request&btnG=Google-Suche&meta= HTTP/1.1\r\n"
"User-Agent: dein Browser\r\n"
"Host: www.google.de\r\n"
"Accept: */*\r\n"
"Accept-Encoding: text/html\r\n\r\n";
string temp = HTTPRequest("www.google.de", 80, request);
if( temp == "fail" )
return 1;
cout << temp << "\n";
cin.get();
return 0;
}
Ich hoffe bei dri geht er auch
EDIT: Schade, zu spät...
|
|
|
 |
Similar Threads
|
hacks funktionieren nicht :(
06/28/2010 - Combat Arms - 6 Replies
hi leute seit einiger eit funktionier kein hack mehr bei mir egal welcher habe die neusten ausprobiert. vllt kann mir ja jemand helfen :handsdown:
|
Angelbots funktionieren nicht
05/15/2010 - Metin2 - 9 Replies
hallo
ich bin neu hier und auch ansonsten auch kein computer genie
ich versuche schon seit längerem an einen funktionierenden angelbot heran zu kommen. ich habe mir schon viele versionen geholt aber keiner funktioniert.
ich glaube das könnte daran liegen:
- ich habe windows 7
- wenn ich metin2 klein mache is da nur so ein weißes symbol und nicht das gewöhnliche zeichen
bitte helft mir
|
Portale funktionieren nicht
03/07/2010 - WoW Private Server - 10 Replies
guten Tag miteinander
wie im titel schon gesagt, klappts bei mir nicht ganz mit den portalen. Nun, ich lösche ein portal das in den port-coords zu finden sind. Dann, mache ich ein neues mit der gleichen id und den coordinaten des ortes den ich will. Danach, mach ich das gameobkect. Doch nun der Punkt. Weenn ich mich dann mit dem fgertigen portal porten will, komme ich immer ind die östlichen Pestländer. Dies passiert immer, egal welche coodinaten ich eintippe. Wie auf 3.2.2a auch auf 3.3.2....
|
maps funktionieren nicht
01/08/2010 - Metin2 PServer Guides & Strategies - 2 Replies
hallöle
wie oben gennant funktionieren die maps die mit dem port 13061 nicht :( naja ich hab die sufu benutzt und kann sagen an portmap ligts nicht und hab 5 mal neu gemacht und es kommt immer das gleiche an was kann das liegen pls help
|
events funktionieren nicht
09/21/2009 - WoW Private Server - 0 Replies
Ich habe das problem das bei meinem arcemu pserver die events nicht funzen.
also z.B. wenn ich einen boss kille geht die tür hinter ihm nicht auf
was kann ich da machen?
|
All times are GMT +1. The time now is 08:56.
|
|