Я пытаюсь загрузить содержимое изображения MMS
с помощью URL-адреса MMS, но он возвращается с ответом сервера 403 (Запрещенный) с недопустимым номером MSISDN
. Я применил свой код ниже для справки. Заранее спасибо!android mms download mms content through mms url
private static boolean downloadThroughGateway(Context context, String host,
String port, String urlMms) throws Exception {
URL url = new URL(urlMms);
// Set-up proxy
if (host != null && port != null && host.equals("") && !port.equals("")) {
Log.d(TAG, "[MMS Receiver] Setting up proxy (" + host + ":" + port
+ ")");
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", host);
systemProperties.setProperty("http.proxyPort", port);
systemProperties.setProperty("http.keepAlive", "false");
}
// Open connection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// Disable cache
connection.setUseCaches(false);
// Set the timeouts
connection.setConnectTimeout(TIMEOUT);
connection.setReadTimeout(TIMEOUT);
// Connect to the MMSC
Log.d(TAG, "[MMS Receiver] Connecting to MMS Url " + urlMms);
connection.connect();
try {
Log.d(TAG,
"[MMS Receiver] Response code is "
+ connection.getResponseCode());
if (connection.getContentLength() >= 0) {
Log.d(TAG, "[MMS Receiver] Download MMS data (Size: "
+ connection.getContentLength() + ")");
byte[] responseArray = new byte[connection.getContentLength()];
DataInputStream i = new DataInputStream(
connection.getInputStream());
int b = 0;
int index = 0;
while ((b = i.read()) != -1) {
responseArray[index] = (byte) b;
index++;
}
i.close();
// Parse the response
MmsDecoder parser = new MmsDecoder(responseArray);
parser.parse();
byte[][] imageBytes = new byte[parser.getParts().size()][];
for (int j = 0; j < parser.getParts().size(); j++) {
imageBytes[j] = parser.getParts().get(j).getContent();
}
// Insert into db
// Uri msgUri = MmsHelper.insert(context, parser.getFrom(),
// parser.getSubject(), imageBytes);
// ContentValues updateValues = new ContentValues();
// updateValues.put("read", 0);
// context.getContentResolver().update(msgUri, updateValues,
// null,
// null);
// Close the connection
Log.d(TAG, "[MMS Receiver] Disconnecting ...");
connection.disconnect();
System.gc();
// Callback
// if (bi != null)
// bi.onReceiveMms(context, msgUri);
return true;
}
// Close the connection
Log.d(TAG, "[MMS Receiver] Disconnecting ...");
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Как насчет учетных данных пользователя? Вы проверяли, установлены ли правильные учетные данные для доступа к службе данных. Вы пытались использовать инструменты (Network Protocol Analyzer), такие как WireShark и т. Д., Чтобы расшифровать запрос отправки MMS (HTTP PDU) и соответствующий ответ от удаленного MMSC. Без предоставления каких-либо сведений о соединении, таких как удаленный URL-адрес MMSC, введите учетные данные, которые трудно воспроизвести, и укажите исправление проблемы. – Sriram
как передать учетные данные, и у меня также не было никакой информации о полномочиях, которые необходимо предоставить? –
Сначала проверьте, сможете ли вы успешно запустить и запустить google.com в своем браузере. Затем вы можете перейти к определенным настройкам MMS, перейдя к (On android 2.0) Настройки-> Мобильные сети -> Имена точек доступа -> Имя вашего сетевого провизора. Здесь вы найдете такие вкладки, как 1.) MMSC 2.) MMS-прокси 3.) MMS-порт 4.) Имя пользователя 5.) Пароль. – Sriram