Mehrere Parallele Verbindungen per HttpClient aufbauen ?

  • Antworten:4
  • Bentwortet
Maik S.
  • Forum-Beiträge: 38

06.01.2011, 15:31:26 via Website

Guten Tag,

ich würde gern mehrere parallele Verbindungen mit Postvariablen zu einem Server aufbauen. Allerdings bin ich mir bei der Implementierung noch nicht ganz sicher.
Leider tauchen noch ein paar Fehler auf, das ganze läuft in einem Thread und auf ähnliche Weise werden noch ein paar andere php-Scripts aufgerufen.
Entweder der Thread wird nur ein mal ausgeführt, oder, nach einem Abbruch des Threads, kommt folgende Meldung:
SntpClient request time failed java.net.SocketException: Address family not supported by protocol

Im Moment schaut es wie folgt aus:
1HttpParams parameters = new BasicHttpParams();
2 parameters.setParameter(
3 "http.useragent",
4 "Mozilla/5.0 (Linux; U; Android 1.1; en-us;dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2");
5 HttpProtocolParams.setVersion(parameters, HttpVersion.HTTP_1_1);
6 HttpProtocolParams.setContentCharset(parameters, "UTF-8");
7
8 SchemeRegistry schReg = new SchemeRegistry();
9 schReg.register(new Scheme("http",
10 PlainSocketFactory.getSocketFactory(), 80));
11 schReg.register(new Scheme("https", PlainSocketFactory.getSocketFactory(), 443));
12
13 connectionManager = new ThreadSafeClientConnManager(parameters,schReg);
14 httpclient = new DefaultHttpClient(connectionManager, parameters);

Und benutzt wird das ganze wie folgt:
1phoneId = telephonyManager.getDeviceId();
2 HttpPost httppost = new HttpPost("http://**/setPhoneId.php");
3
4 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
5 nameValuePairs.add(new BasicNameValuePair("phoneid",phoneId));
6 try {
7 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
8 httpclient.execute(httppost);
9 } catch (UnsupportedEncodingException e) {
10 e.printStackTrace();
11 } catch (ClientProtocolException e) {
12 e.printStackTrace();
13 } catch (IOException e) {
14 e.printStackTrace();
15 }

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

06.01.2011, 16:05:35 via Website

Ich sehe das du den ThreadSafeConnectionManager nutzt, sprichst du von einem anderen Thread ?

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Maik S.
  • Forum-Beiträge: 38

07.01.2011, 11:12:49 via Website

Mac Systems
Ich sehe das du den ThreadSafeConnectionManager nutzt, sprichst du von einem anderen Thread ?

Ja, der httpClient mit dem TSCM wird in einem eigenen Thread genutzt, der innerhalb der Klasse erzeugt wird, wenn das deine Frage beantwortet.

Antworten
Maik S.
  • Forum-Beiträge: 38

12.01.2011, 13:26:11 via Website

Habe das Problem nun gelöst, indem ich mein Programm so geschrieben habe, dass nur ein einzelner Thread ausreicht, der die Verbindungen nacheinander abarbeitet.

MfG

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

12.01.2011, 14:56:56 via Website

Das sollte ansich dennoch nicht das problem gewesen sein, HTTPClient hat eine Queue bereits... schau die die Parameter mal an.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten