Существует еще одна статья о StackOverflow, которая похожа на ваш сценарий, который может быть полезен: .htaccess перенаправляет с помощью фрагмента
Я не вижу права сервера теперь так не могу проверить это, но, возможно, связанная статья прольет некоторый свет на вещи в любом направлении.
Предписания, отправленные в браузер, могут содержать не только URL-адрес. В более ранних версиях android можно было добавить дополнительные POST-данные в намерение, в более новых версиях эта возможность исчезла, но можно отправить дополнительные данные заголовка для GET (что может быть почти что угодно, представляемое в виде строки) в намерении доставлено в браузер.
try{
String finalUrl = "javascript:" +
"var to = 'http://the_link_you_want_to_open';" +
"var p = {param1:'"+your_param+"',param2:'"+your_param+"'};" +
"var myForm = document.createElement('form');" +
"myForm.method='post' ;" +
"myForm.action = to;" +
"for (var k in p) {" +
"var myInput = document.createElement('input') ;" +
"myInput.setAttribute('type', 'text');" +
"myInput.setAttribute('name', k) ;" +
"myInput.setAttribute('value', p[k]);" +
"myForm.appendChild(myInput) ;" +
"}" +
"document.body.appendChild(myForm) ;" +
"myForm.submit() ;" +
"document.body.removeChild(myForm) ;";
Uri uriUrl = Uri.parse(finalUrl);
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
PackageManager packageManager = this.getPackageManager();
browserIntent.setData(uriUrl);
List<ResolveInfo> list = packageManager.queryIntentActivities(browserIntent, 0);
for (ResolveInfo resolveInfo : list) {
String activityName = resolveInfo.activityInfo.name;
if (activityName.contains("BrowserActivity")) {
browserIntent =
packageManager.getLaunchIntentForPackage(resolveInfo.activityInfo.packageName);
ComponentName comp =
new ComponentName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
browserIntent.setAction(Intent.ACTION_VIEW);
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
browserIntent.setComponent(comp);
browserIntent.setData(uriUrl);
}
}
this.startActivity(browserIntent);
}catch (Exception e){
e.printStackTrace();
txtHeader.setText(e.toString());
}
Использовать веб-просмотр:
WebView webview = new WebView(this);
setContentView(webview);
byte[] post = EncodingUtils.getBytes("postvariable=value&nextvar=value2", "BASE64");
webview.postUrl("http://www.geenie.nl/AnHeli/mobile/ranking/demo/index.php", post);
Я считаю, что в вопросе есть небольшое заблуждение. Недостаток - это то, что вам нужно для POST вместо GET.
Если вы согласитесь, я сделаю несколько предположений, которые могут быть общими в этом контексте:
Любой из этих вариантов или требований подразумевает некоторую дополнительную обработку, отличную от обычного варианта использования браузера (который должен полностью контролировать обработку и взаимодействие). Кажется, что вы на самом деле запрашиваете связь Machine to Machine (M2M) с возможным выходом HTML.
Если это правда, то использование некоторых OKHttp, HTTPURLConnection, Apache HTTP Client и т. Д. Является правильным выбор. Вместо этого вызывается браузер через Intent, который имеет почти нулевые возможности обмена сообщениями (просто стреляйте и забудьте - в случае http: ...). Фактически это требует некоторого анализа потока данных (может помочь диаграмма последовательности), а затем для разработки этого процесса в M2M или при помощи M2M-взаимодействия.
Если сервер, с которым вы работаете, взаимодействует с вашим собственным, то почему вы не создаете REST / JSON / SOAP или другой API M2M для выполнения удаленных вызовов методов (RPC / RMI / ...). Это не так сложно, как могло бы выглядеть (например: http://coreymaynard.com/blog/creating-a-restful-api-with-php/ или https: // docs )
Альтернативой было бы сделать ваше взаимодействие M2M скорее на вашем сервере APP, потому что тогда возможные изменения в BE поток данных сервера может быть отражен без изменения приложения. Таким образом, вы фактически перешлите сообщение M2M на серверную сторону.
Примечание. Использование приложения для взаимодействия с сторонними серверами может иметь некоторые юридические последствия. Фактически, этот сервер может не допускать другого использования, кроме как через браузер (обнаружение человека = captcha, обнаружение User-Agent). В этом случае вам необходимо договориться с владельцем сервера.