Я пытаюсь опубликовать изображение jpg на веб-сервере.Я проверил свой PHP-скрипт на сервере, и я могу загрузить изображение с помощью формы.Теперь я пытаюсь создать приложение Blackberry для отправки изображения на сервер, используя тот же сценарий, однако, когда я тестирую код Java, PHP сообщает мне, что НИЧЕГО НЕ ПОСТАВЛЕНО, я не уверен, что делаю неправильно, ноделаю что-то вроде этого:
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);
}
Я только что попытался клонировать заголовок, отправленный Chrome, когда я использую форму, я думаю, что они имеют ту же информацию.сценарий сначала проверяет, было ли что-то опубликовано, если ничего не было опубликовано, затем возвращает сообщение, поэтому я могу «использовать» сценарий на веб-сервере, и я вижу, что устройство Blackberry загружает данные, но ответ таков:ничего не было опубликовано.
Я думаю, что отправляю информацию на сервер в неправильном формате.
Любая помощь будет принята с благодарностью.
Спасибо!