hey Leute,
bräuchte mal ganz dringend Hilfe
Also ich versuche einen Socket zu erstellen, der dann eine Anfrage versendet. Ich möchte , dass der Socket nicht geschlossen wird, um dann weitere Anfragen zu verschicken. Allerdings wird der Socket immer geschlossen. Das Problem ist, dass ich das beim Webservice von geocoder.us es hinbekomme im response, ein "keep-alive" zu bekommen, aber es trotzdem bei der zweiten Anfrage zur Exception kommt, die besagt, dass der Socket schon geschlossen sei.
Beim Webservice von Flickr bekomme ich es nicht mal hin im Response ein keep-alive zu erhalten:
Sowohl das Aufrufen der Methode setkeepAlive(true), als auch das setzen des Connectionswertes im Header zeigt keine Wirkung. Meine Frage ist es vielleicht serverspezifisch, dass flickr es einfach nicht erlaubt offene Verbindungen zu halten?
Vielen Dank im Voraus
mfg newbie
bräuchte mal ganz dringend Hilfe
Also ich versuche einen Socket zu erstellen, der dann eine Anfrage versendet. Ich möchte , dass der Socket nicht geschlossen wird, um dann weitere Anfragen zu verschicken. Allerdings wird der Socket immer geschlossen. Das Problem ist, dass ich das beim Webservice von geocoder.us es hinbekomme im response, ein "keep-alive" zu bekommen, aber es trotzdem bei der zweiten Anfrage zur Exception kommt, die besagt, dass der Socket schon geschlossen sei.
Beim Webservice von Flickr bekomme ich es nicht mal hin im Response ein keep-alive zu erhalten:
HTML:
HTTP/1.1 200 OK
Date: Wed, 26 Sep 2012 22:49:16 GMT
P3P: policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
Content-Length: 186
Cache-Control: private
X-Served-By: www190.flickr.mud.yahoo.com
Vary: Accept-Encoding
Connection: close
Content-Type: text/xml; charset=utf-8
Java:
static String geoURL ="http://geocoder.us/";
static String geoRequest ="/service/rest/geocode?address=1600+Pennsylvania+Ave,+Washington+DC";
Socket socket;
String host;
public static void main(String [] args){
iptransformer transformer = new iptransformer();
transformer.openSocket(geoURL);
transformer.makeGETRequest();
transformer.makeGETRequest();
}
public void openSocket(String URL){
try{
InetAddress address = InetAddress.getByName(new URL(URL).getHost());
int port =80;
host = address.getHostName();
String ipAddress = address.getHostAddress();
socket = new Socket(ipAddress, port);
System.out.println(socket.isConnected());
}catch (Exception e){
e.printStackTrace();
}
}
public void makeGETRequest(){
try {
// Construct data
// String data = "GET " + requestString + " HTTP/1.1 \r\n" + "Host: " + host + "\r\n";
String data = "GET " + geoRequest + " HTTP/1.1 \r\n" + "Host: " + host + "\r\n"+"Connection: keep-alive"+"\r\n";
socket.setKeepAlive(true);
System.out.println(data);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
wr.write(data);
wr.write("Content-Length: "+data.length()+"\r\n");
wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
wr.write("\r\n");
// Send data
wr.write(data);
wr.flush();
// Get response
BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
wr.close();
rd.close();
} catch (Exception e) {
System.out.println(e);
}
}
Sowohl das Aufrufen der Methode setkeepAlive(true), als auch das setzen des Connectionswertes im Header zeigt keine Wirkung. Meine Frage ist es vielleicht serverspezifisch, dass flickr es einfach nicht erlaubt offene Verbindungen zu halten?
Vielen Dank im Voraus
mfg newbie
Zuletzt bearbeitet: