Próbuję pobrać zawartość obrazu MMS
za pośrednictwem adresu URL MMS, ale wraca ona z odpowiedzią serwera 403 (Forbidden) z nieprawidłowym numerem MSISDN
. Wkleiłem poniższy kod w celach informacyjnych. Z góry dziękuję!android mms pobierz treść mms za pomocą adresu 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;
}
Co z poświadczeniami dostępu użytkownika? Czy sprawdziłeś, czy ustawione są odpowiednie poświadczenia dostępu do usługi danych. Czy próbowałeś użyć narzędzi (Network Protocol Analyzer) takich jak WireShark itp. Do odszyfrowania żądania przesłania MMS (HTTP PDU) i odpowiadającej odpowiedzi ze zdalnego MMSC. Nie podając żadnych szczegółów dotyczących połączenia, takich jak zdalny adres URL MMSC, połóż poświadczenia, które są trudne do odtworzenia i podaj poprawkę dla problemu. – Sriram
jak przekazać referencje, a także nie mam żadnych informacji na temat poświadczenia, które należy dostarczyć? –
Najpierw sprawdź, czy możesz uzyskać dostęp do witryny google.com i pomyślnie ją uruchomić w swojej przeglądarce. Następnie możesz przejść do ustawień specjalnych MMS, przechodząc do (Na Androidzie 2.0) Ustawienia-> Sieci komórkowe -> Nazwy punktów dostępu -> Nazwa dostawcy sieci. Tutaj znajdziesz Tabs, takie jak 1.) MMSC 2.) MMS proxy 3.) Port MMS 4.) Nazwa użytkownika 5.) Hasło. – Sriram