J'essaie d'afficher une image jpg sur un serveur Web. J'ai testé mon script PHP sur le serveur et je suis en mesure de télécharger une image en utilisant un formulaire. Maintenant j'essaie de faire une application Blackberry pour POSTER l'image sur le serveur en utilisant le même script mais quand je teste le code Java, PHP me dit que RIEN n'a été POSTé, je ne suis pas sûr de ce que je fais de mal mais je « fais quelque chose comme ceci:Image POST sur un problème de serveur Web
String mBoundary = "SUPSUPSUPSUP";
/* Preparar objeto a enviar */
InputStream mImagen = this.getClass().getResourceAsStream("sample.jpg");
byte[] mBytesPostear = IOUtilities.streamToBytes(mImagen);
HttpConnection mConexion = (HttpConnection) Connector.open("http://www.raspberry.com/script.php");
/* Preparar headers del POST. Es multiformulario con POST de un archivo */
mConexion.setRequestMethod(HttpConnection.POST);
mConexion.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE, HttpProtocolConstants.CONTENT_TYPE_MULTIPART_FORM_DATA + ";boundary=" + mBoundary);
mConexion.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH, String.valueOf(mBytesPostear.length));
mConexion.setRequestProperty("x-rim-transcode-content", "none");
/* Preparar contenido de salida */
ByteArrayOutputStream mOutput = new ByteArrayOutputStream();
OutputStream mOS = mConexion.openOutputStream();
/* Escribir contenido */
String nuevaLinea = "\r\n";
String contDisp="Content-Disposition:form-data; name=\"foto\";filename=\"sample.jpg\"";
String contEnc = "Content-Transfer-Encoding: binary";
String type="Content-Type:image/jpeg";
mOutput.write(nuevaLinea.getBytes());
mOutput.write("--".getBytes());
mOutput.write(mBoundary.getBytes());
mOutput.write(nuevaLinea.getBytes());
mOutput.write(contDisp.getBytes());
mOutput.write(nuevaLinea.getBytes());
mOutput.write(type.getBytes());
mOutput.write(nuevaLinea.getBytes());
mOutput.write(contEnc.getBytes());
mOutput.write(nuevaLinea.getBytes());
mOutput.write(nuevaLinea.getBytes());
mOutput.write(mBytesPostear);
mOutput.write(nuevaLinea.getBytes());
mOutput.write("--".getBytes());
mOutput.write(mBoundary.getBytes());
mOutput.write("--".getBytes());
mOutput.write(nuevaLinea.getBytes());
/**********************/
/* Escribir el contenido */
mOS.write(mOutput.toByteArray());
mOutput.flush();
mOutput.close();
mOS.flush();
mOS.close();
/* Recibir respuesta del servidor */
InputStream mIS = mConexion.openInputStream();
int mLongitud = (int) mConexion.getLength();
if (mLongitud > 0) {
int mActual = 0;
int mBytesLeidos = 0;
byte[] mBytes = new byte[mLongitud];
while ((mBytesLeidos != mLongitud) && (mActual != -1)){
mActual = mIS.read(mBytes, mBytesLeidos, mLongitud - mBytesLeidos);
mBytesLeidos += mActual;
}
String mRespuesta = new String(mBytes);
System.out.println("Respuesta: " + mRespuesta);
}
Je viens d'essayer de cloner l'en-tête qui est envoyé par Chrome lorsque j'utilise la forme, je pense qu'ils ont les mêmes informations. Mon script PHP vérifie d'abord si quelque chose a été posté, si rien n'a été posté, puis il renvoie un message afin que je puisse "consommer" le script sur le serveur web et je peux voir que le périphérique Blackberry télécharge le données mais la réponse est que rien n'a été posté.
Je pense que j'envoie l'information au serveur dans un mauvais format.
Toute aide serait grandement appréciée.
Merci!
Cela peut avoir Rien à voir avec PHP, si le code PHP fonctionne. Peu importe, il peut très bien avoir quelque chose à voir avec ce code Java. –
Je suis presque sûr que le problème est avec le code Java, je demande effectivement de l'aide avec le code Java – Arturo