CURL Error bei Aufruf eines Services

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 28.01.2016 15:12:36

Hallo erstmal,

also ich weiß nicht ob das hier richtig ist, da ich aber nicht weiß, wo das Problem liegt, würde ich hier mal anfangen.

Ich habe einen Webservice (Java REST) auf einem Debian-Server (getestet mit Debian 7 und 8) laufen, welcher eine JSON-Antwort sendet. Diese Antwort nutze ich dann in einem Modul für meine Webseite, welche auf Joomla aufsetzt. Webseite und Webservice laufen auf getrennten Maschinen, aber ist alles kein Problem, funktioniert fehlerfrei.

Nun habe ich den Webservice auf einen anderen Server (ebenfalls Debian) umgezogen. Den Service kann ich über URL im Browser problemlos ansprechen und bekomme die erwartete Antwort. Leider kommt auf der Webseite immer eine Fehlermeldung beim Aufbau mit curl. Ich habe nichts außer der Adresse des Servers geändert.

Beide Server sind mit Debian 64 Bit minimal installiert

Fehlermeldung: cURL Error (7): Failed to connect to port 8080: Connection refused

Code: Alles auswählen

$curl = curl_init();
//curl_setopt($curl, CURLOPT_URL, "[ALTER_SERVER]:8080/hgidataservice/hgidataservice/gameservice/gamepreview?nextDays=14");
curl_setopt($curl, CURLOPT_URL, "[NEUER_SERVER]:8080/hgidataservice/hgidataservice/gameservice/gamepreview?nextDays=14");
curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_ENCODING, "UTF-8");
    
$curl_response = curl_exec($curl);
    
if ($curl_errno = curl_errno($curl)) {
$curl_error = curl_error($curl);
echo "cURL Error ($curl_errno): $curl_error<br><br>";
$info = curl_getinfo($curl);
curl_close($curl);
die('error occurred during curl exec. Additional info: ' . var_export($info));
}
Weiß wer, wieso das mit dem neuen Server nicht läuft? Mir ist nicht mehr in Erinnerung, dass ich was auf dem alten Server eingestellt habe, dass es geklappt hat. Leider kam ich bisher nicht weiter

Vielen Dank schon mal

Ausgabe curl_getinfo

Code: Alles auswählen

array ( 'url' => 'http://server-ip:8080/hgidataservice/hgidataservice/gameservice/gamepreview?nextDays=14', 'content_type' => NULL, 'http_code' => 0, 'header_size' => 0, 'request_size' => 0, 'filetime' => -1, 'ssl_verify_result' => 0, 'redirect_count' => 0, 'total_time' => 0.00010399999999999999, 'namelookup_time' => 2.5999999999999998E-5, 'connect_time' => 0, 'pretransfer_time' => 0, 'size_upload' => 0, 'size_download' => 0, 'speed_download' => 0, 'speed_upload' => 0, 'download_content_length' => -1, 'upload_content_length' => -1, 'starttransfer_time' => 0, 'redirect_time' => 0, 'certinfo' => array ( ), 'primary_ip' => '', 'primary_port' => 0, 'local_ip' => '', 'local_port' => 0, 'redirect_url' => '', )

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CURL Error bei Aufruf eines Services

Beitrag von heisenberg » 28.01.2016 16:56:35

Wie wäre es, wenn Du die Ausgabe mal zumindest schön mit var_dump formatierst, dass man das einfacher lesen kann?

DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

Re: CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 28.01.2016 18:56:18

Gerne. Hier die formatierte Ausgabe

Code: Alles auswählen

array(26) { 
	["url"]=> string(91) "http://IP:8080/hgidataservice/hgidataservice/gameservice/gamepreview?nextDays=14" 
	["content_type"]=> NULL 
	["http_code"]=> int(0) 
	["header_size"]=> int(0) 
	["request_size"]=> int(0) 
	["filetime"]=> int(-1) 
	["ssl_verify_result"]=> int(0) 
	["redirect_count"]=> int(0) 
	["total_time"]=> float(8.5E-5) 
	["namelookup_time"]=> float(2.3E-5) 
	["connect_time"]=> float(0) 
	["pretransfer_time"]=> float(0) 
	["size_upload"]=> float(0) 
	["size_download"]=> float(0) 
	["speed_download"]=> float(0) 
	["speed_upload"]=> float(0) 
	["download_content_length"]=> float(-1) 
	["upload_content_length"]=> float(-1) 
	["starttransfer_time"]=> float(0) 
	["redirect_time"]=> float(0) 
	["certinfo"]=> array(0) { } 
	["primary_ip"]=> string(0) "" 
	["primary_port"]=> int(0) 
	["local_ip"]=> string(0) "" 
	["local_port"]=> int(0) 
	["redirect_url"]=> string(0) "" 
}
Hier die Ausgabe mit dem anderen Server:

Code: Alles auswählen

array(26) { 
	["url"]=> string(92) "http://IP:8080/hgidataservice/hgidataservice/gameservice/gamepreview?nextDays=14" 
	["content_type"]=> string(30) "application/json;charset=UTF-8" 
	["http_code"]=> int(200) 
	["header_size"]=> int(151) 
	["request_size"]=> int(147) 
	["filetime"]=> int(-1) 
	["ssl_verify_result"]=> int(0) 
	["redirect_count"]=> int(0) 
	["total_time"]=> float(0.010303) 
	["namelookup_time"]=> float(2.7E-5) 
	["connect_time"]=> float(0.003895) 
	["pretransfer_time"]=> float(0.003925) 
	["size_upload"]=> float(0) 
	["size_download"]=> float(2426) 
	["speed_download"]=> float(235465) 
	["speed_upload"]=> float(0) 
	["download_content_length"]=> float(2426) 
	["upload_content_length"]=> float(-1) 
	["starttransfer_time"]=> float(0.010297) 
	["redirect_time"]=> float(0) 
	["certinfo"]=> array(0) { } 
	["primary_ip"]=> string(14) "84.200.204.122" 
	["primary_port"]=> int(8080) 
	["local_ip"]=> string(14) "213.133.104.12" 
	["local_port"]=> int(56580) 
	["redirect_url"]=> string(0) "" } 
Die Anfrage scheint gar nicht durch zu kommen oder? Aber wieso klappt das über den Browser direkt und nicht über die Joomla-Webseite?
Zuletzt geändert von DanielHGI am 28.01.2016 19:06:10, insgesamt 1-mal geändert.

DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

Re: CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 28.01.2016 19:03:40

Noch eine Ergänzung. Der Server ist ganz neu aufgesetzt. Aktuell habe ich nur Oracle Java 8, Tomcat 8 und curl installiert. Ansonsten habe ich den Zugriff über SSH für den Root gesperrt.

DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

Re: CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 28.01.2016 20:15:04

Könnte das hier weiteren Aufschluss geben, dass es eventuell an IPv6 liegt und ich den Aufruf mit einer normalen IP mache?

Code: Alles auswählen

CURL_VERSION_IPV6 matches CURLOPT_IPRESOLVE matches

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CURL Error bei Aufruf eines Services

Beitrag von heisenberg » 28.01.2016 20:18:26

Ja, sieht so aus, als ob da rein gar nix zurück kommt. Du könntest nochmal mit wget testen, was Du da zurück bekommst.

Code: Alles auswählen

wget -O- "http://IP:8080/hgidataservice/hgidataservice/gameservice/gamepreview?nextDays=14"
- Kannst Du das Logging beim Webservice hochdrehen und schauen, was Dein Webservice so zu dem Request sagt?
- Du könntest sowohl am Client als auch am Server mittels tcpdump den Request mitschneiden zwischen Client/NeuerServer und Client/AlterServer und dann vergleichen.

Code: Alles auswählen

tcpdump -nns0 -i INTERFACE -w packets.raw and host CLIENTIP
Die Datei packets.raw kannst Du Dir dann schön mit wireshark(grafisch) laden und genauer anschauen.

DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

Re: CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 28.01.2016 20:24:25

Hallo,
also wenn ich das auf dem Server in der Konsole (Putty) aufrufe, kommen die Daten korrekt zurück

Grüße

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CURL Error bei Aufruf eines Services

Beitrag von heisenberg » 28.01.2016 20:26:44

also wenn ich das auf dem Server in der Konsole (Putty) aufrufe, kommen die Daten korrekt zurück
Den curl-Code?

Wenn ja, dann liegt vielleicht irgend ein Berechtigungsproblem vor?

DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

Re: CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 28.01.2016 20:27:58

Den curl-Code?
Nein den von dir geschriebenen wget-Aufruf

DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

Re: CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 28.01.2016 20:50:25

Du könntest sowohl am Client als auch am Server mittels tcpdump den Request mitschneiden zwischen Client/NeuerServer und Client/AlterServer und dann vergleichen.
Da kommt bei dem Server, bei dem es nicht funktioniert nichts an, wenn ich den tcpdump für Port 8080 aktiviere. Der funktioniere Server hat einige Ausgaben, wenn ich den Aufruf starte

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CURL Error bei Aufruf eines Services

Beitrag von heisenberg » 28.01.2016 21:50:14

Wenn's mit wget funktioniert, dann muss es am cURL Aufruf liegen. Vielleicht kann man den Request irgendwie debuggen. Da würde ich mal nach googlen(bzw. curl-doku von php.net lesen), den Request vor dem absenden im Code irgendwie auszugeben und dann mit dem Request des funktionierenden Servers zu vergleichen.

Du kannst Dir auch beide abgesendeten Requests vom tcpdump nochmal genau anschauen(mit wireshark) und vergleichen. Vielleicht steht da irgend ein auffälliger Schrott drin: falsche IP, Port, ...
Zuletzt geändert von heisenberg am 28.01.2016 22:00:48, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CURL Error bei Aufruf eines Services

Beitrag von heisenberg » 28.01.2016 21:55:37

DanielHGI hat geschrieben:Könnte das hier weiteren Aufschluss geben, dass es eventuell an IPv6 liegt und ich den Aufruf mit einer normalen IP mache?

Code: Alles auswählen

CURL_VERSION_IPV6 matches CURLOPT_IPRESOLVE matches
Ich verstehe zwar nicht was Du meinst, würde Dich aber bestärken dem nachzugehen! :)

DanielHGI
Beiträge: 8
Registriert: 28.01.2016 15:07:37

Re: CURL Error bei Aufruf eines Services

Beitrag von DanielHGI » 29.01.2016 14:34:42

Das Problem ist gelöst. Der Webhoster musste eine Ausnahme in der Firewall hinzufügen. Nun geht es auch mit dem neuen Server.

@Heisenberg: Vielen Dank für deine Mühe :THX:

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CURL Error bei Aufruf eines Services

Beitrag von heisenberg » 29.01.2016 15:26:04

Zwischendurch hatte ich auch schon daran gedacht. Aber da's mit wget und Browser geht und mit curl nicht, habe ich den Gedanken wieder verworfen.

Antworten