如何使用webview将post-param传递到url



我正在使用下面的代码在我的android应用程序中打开网站页面,需要用它发送帖子参数,

WebView webview = new WebView(this);
String url = "https://xxxxx.com/payment/";
try{
String postData ="token="+URLEncoder.encode(token,"UTF-8")+
"&language="+URLEncoder.encode("fa", "UTF-8");
webview.postUrl(url, postData.getBytes());
}
catch(IOException ioe){
//
}

我不明白这个代码出了什么问题?有些时候它不显示任何内容,而另一些时候它没有正确发送参数。

我一直在网站上测试这个表单的url和参数,它的工作没有任何问题

<form id="form" action="https://xxxxx.com/payment/" method="post">
<label>Token:</label><input type="text" id="token" name="token" value="$token" />
<label>language:</label><input type="text" id="language" name="language" value="fa" size="5px" />
<input type="submit" id="btnPymnt" value="payment" name="btnPymnt" />
</form>

但在android应用程序中,我遇到了问题。

我已经通过以下代码解决了问题:

public void call(String Token){
webView.setWebViewClient(new NameActiviy.myWebClient());
webView.getSettings().setJavaScriptEnabled(true);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
try {
String postData = "token=" + URLEncoder.encode(Token, "UTF-8") +
"&language=" + URLEncoder.encode("fa", "UTF-8");
url = "https://xxxxxx.com/payment/";
webView.postUrl(url, postData.getBytes());
}
catch(IOException ioe){
//
}
}
public class myWebClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progressBar.setVisibility(View.VISIBLE);
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
}
}

最新更新