Ce code fonctionne très bien sur les téléphones cellulaires SonyEricsson et Motorola, mais sur Nokia, il échoue au début, ne fait aucune demande ou renvoie une réponse vide, selon le modèle. Essayé différents codes avec des tampons d'octets, des flux, etc, le résultat est toujours le même. Quel est le problème?J2ME, Nokia, HttpConnection
2
A
Répondre
0
l'essayer
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
public class Transport {
public static int BUFFER_LENGTH = 100;//1024;
public static boolean USE_FLUSH = false;
static {
if (DeviceDetect.getDeivice() == DeviceDetect.SAMSUNG) {
BUFFER_LENGTH = 1024;
USE_FLUSH = true;
}
}
public static String SESSION_COOKIE = null;
private static int rnd = 1;
private static final String request(String url, String method, Hashtable params) throws IOException {
HttpConnection conn = null;
DataOutputStream dos = null;
InputStream in = null;
try {
String encodedParams = null;
if (params != null && params.size() > 0) {
encodedParams = getEncodedParams(params);
}
if (method == null) {
if (encodedParams.length() < 2000) {
method = "GET";
} else {
method = "POST";
}
}
method = method != null && method.equalsIgnoreCase("POST") ? HttpConnection.POST : HttpConnection.GET;
if (method.equalsIgnoreCase(HttpConnection.GET)) {
if (encodedParams != null) {
url += (url.indexOf("?") == -1 ? "?" : "&") + encodedParams;
encodedParams = null;
}
url += (url.indexOf("?") == -1 ? "?" : "&") + "_rnd=" + rnd++;
}
conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE, true);
if (conn == null) {
throw new IOException("HttpConnection is null, please check Access Point configuration");
}
conn.setRequestMethod(method);
conn.setRequestProperty("User-Agent", UserAgent.getUserAgent());
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
if (SESSION_COOKIE != null) {
conn.setRequestProperty("Cookie", SESSION_COOKIE);
}
byte[] buff = new byte[BUFFER_LENGTH];
if (encodedParams != null) {
byte[] bytes = encodedParams.getBytes("UTF-8");
String lengthStr = bytes.length + "";
conn.setRequestProperty("Content-Length", lengthStr);
dos = conn.openDataOutputStream();
if (dos == null) {
throw new IOException("OutputStream is null, please check Access Point configuration");
}
for (int i = 0, l = bytes.length; i < l; i += Transport.BUFFER_LENGTH) {
if (Transport.BUFFER_LENGTH == 1) {
dos.writeByte(bytes[i]);
} else {
int count = Math.min(Transport.BUFFER_LENGTH, l - i);
System.arraycopy(bytes, i, buff, 0, count);
dos.write(buff, 0, count);
}
if (Transport.USE_FLUSH) {
dos.flush();
}
}
dos.flush();
try {
dos.close();
} catch (IOException ex) {
}
}
String setCookie = conn.getHeaderField("Set-Cookie");
if (setCookie != null) {
int ind1 = setCookie.indexOf("JSESSIONID=");
if (ind1 > -1) {
int ind2 = setCookie.indexOf(";", ind1);
SESSION_COOKIE = ind2 == -1 ? setCookie.substring(ind1) : setCookie.substring(ind1, ind2 + 1);
}
}
in = conn.openInputStream();
if (in == null) {
throw new IOException("InputStream is null, please check Access Point configuration");
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int n = in.read(buff);
while (n > -1) {
baos.write(buff, 0, n);
n = in.read(buff);
}
baos.flush();
baos.close();
String response = new String(baos.toByteArray(), "UTF-8");
try {
in.close();
} catch (Exception ex) {
}
try {
conn.close();
} catch (Exception ex) {
}
return response;
} finally {
try {
dos.close();
} catch (Exception ex) {
}
try {
in.close();
} catch (Exception ex) {
}
try {
conn.close();
} catch (Exception ex) {
}
}
}
public static String getEncodedParams(Hashtable params) throws IOException {
String str = "";
Enumeration keys = params.keys();
while (keys.hasMoreElements()) {
String name = (String) keys.nextElement();
Object value = params.get(name);
if (value == null || name == null) {
continue;
}
str += "&" + URLEncoder.encode(name.toString(), "UTF-8") + "=" + URLEncoder.encode(value.toString(), "UTF-8");
}
if (str.length() > 1) {
str = str.substring(1);
}
return str;
}
}
0
Je ne suis pas sûr si cela fonctionnera pour vous, mais j'ai eu un problème similaire et a constaté que la spécification d'un numéro de port fait fonctionner (sur certains modèles Nokia plus). i.e. convertir:
http://www.mysite.com/my_page.html
à:
http://mysite.com:80/my_page.html
Questions connexes
- 1. J2ME: HttpConnection ne pas fermer immédiatement
- 2. J2ME Nokia 5800 émulateur
- 3. Midlet J2me qui lit à partir de HttpConnection throws IOException
- 4. J2ME HttpConnection getResponseCode() bloque attente réponse du serveur sur Nokia N97
- 5. j2me httpconnection ne fonctionne pas dans les périphériques samsung
- 6. Applications J2ME dans Nokia 2660
- 7. Comment installer J2ME sur Nokia 1200?
- 8. Exécuter l'application J2me avec Nokia mobile c200
- 9. Dans J2ME, Comment définir les informations d'en-tête avec HttpConnection?
- 10. J2me Httpconnection, lequel est préférable d'obtenir ou de poster?
- 11. Recherche de bibliothèques éprouvées pour Blackberry ou J2ME (HttpConnection)
- 12. LWUIT httpconnection ne fonctionne pas sur Blackberry
- 13. Problèmes avec LWUIT dans J2ME sur Nokia E72
- 14. Est-ce que J2ME Media Player sur Nokia E65 fonctionne?
- 15. J2ME éviter le mode de compatibilité sur Nokia 5800
- 16. J2ME pour Nokia S60 5ème: API série bluetooth
- 17. J2ME OutOfMemoryError Pendant la lecture du nokia 6300?
- 18. j2me JAR Manifest, JAD File et Nokia Publier QA échec
- 19. Nokia Application Distribution
- 20. HttpConnection package
- 21. L'application j2me ne fonctionne pas sur Téléphone Mobile
- 22. Réponse décodée dans Java ME (Nokia Asha)
- 23. Nokia N97 réalisé à l'orientation
- 24. Quelle est la différence entre httpconnection sur J2ME et HttpUrlConnection sur Android (erreur http 401)
- 25. Apache Commons HttpConnection: PostMethod - Récupérer sous-jacente HttpConnection
- 26. Comment déclencher une application Symbian C++ dans une application J2ME pour les téléphones Nokia utilisant l'API J2ME?
- 27. GPS avec le vernis J2ME
- 28. AsyncTask HttpConnection dans Android
- 29. Erreur dans HttpConnection
- 30. instanciation du type HttpConnection