gpt4 book ai didi

android - HTTP POST 响应到 android 中的 WebView

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:00 25 4
gpt4 key购买 nike

我正在尝试使用 HTTP 连接到该页面邮政。我做了一个用于创建的 http 帖子一个 WebView 。我需要从 webview 重定向到另一个页面。但是当单击继续按钮时会抛出异常。

我的代码是

public class ZHttpPostProjActivity extends Activity {
/** Called when the activity is first created. */

private WebView mWebView;
private ProgressDialog progressBar;
private static final String TAG = "ZHttpPostProjActivity";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);

mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();

webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);

progressBar = ProgressDialog.show(ZHttpPostProjActivity.this, "",
"Loading...");

postData();
}


private final String URL_REGISTER = "https://www.paypal.com/checkout";

public void postData() {

BufferedReader bufferedReader = null;

try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username", "username"));
nameValuePairs.add(new BasicNameValuePair("password", "password"));

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL_REGISTER);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,
HTTP.UTF_8));

HttpResponse response = httpclient.execute(httppost);

bufferedReader = new BufferedReader(new InputStreamReader(response
.getEntity().getContent()));
StringBuffer stringBuffer = new StringBuffer("");
String line = "";
String LineSeparator = System.getProperty("line.separator");
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line + LineSeparator);
}
bufferedReader.close();

String webData = stringBuffer.toString();
Log.i(TAG + "web data : ", webData);

// String webData = new
// BasicResponseHandler().handleResponse(response);

Log.i(TAG, "Httppost.getURI().toString(): "
+ httppost.getURI().toString());

mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "Processing webview url click...");
view.loadUrl(url);
return true;
}

public void onPageFinished(WebView view, String url) {

Log.i(TAG, "Finished loading URL: " + url);
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}

public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Log.e(TAG, "Error: " + description + " \n errorCode: "
+ errorCode + "\n failingUrl: " + failingUrl);

}
});

// mWebView.loadUrl(httppost.getURI().toString());
mWebView.loadData(webData, "text/html", "UTF-8");
mWebView.loadDataWithBaseURL(httppost.getURI().toString(), webData,
"text/html", HTTP.UTF_8, null);

} catch (Exception ex) {
ex.printStackTrace();
}

}

当点击 webview 中的继续按钮时抛出异常

02-21 11:42:38.539: E/webviewdatabase(2848): Failed in setFormData
02-21 11:42:38.539: E/webviewdatabase(2848): java.net.MalformedURLException: Unknown protocol: about
02-21 11:42:38.539: E/webviewdatabase(2848): at java.net.URL.<init>(URL.java:288)
02-21 11:42:38.539: E/webviewdatabase(2848): at java.net.URL.<init>(URL.java:157)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.webkit.WebViewDatabase.setFormData(WebViewDatabase.java:1032)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.webkit.BrowserFrame.loadStarted(BrowserFrame.java:384)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:91)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:108)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.os.Looper.loop(Looper.java:123)
02-21 11:42:38.539: E/webviewdatabase(2848): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:673)
02-21 11:42:38.539: E/webviewdatabase(2848): at java.lang.Thread.run(Thread.java:1019)
02-21 11:42:41.324: E/cache(2848): illegal expires: Sat, Jan 01 2000 01:01:01 GMT

最佳答案

像这样使用

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);

关于android - HTTP POST 响应到 android 中的 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9373103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com