【问题标题】:Android POST with HTTP Url request带有 HTTP Url 请求的 Android POST
【发布时间】:2016-09-30 23:32:37
【问题描述】:

我正在尝试使用这样的 POST 命令:

http://123.456.78.9/Dev/SignIn?Username=email%40google.edu&Password=thePassword

在我的 Android 应用程序中,我查看了 HTTPConnection 之类的内容,但我仍然不确定在需要包含多个键和值的情况下进行此类调用的最佳方法是什么。

我现在正在尝试这个:

                URl url = new URL("http://123.456.78.9/Dev/SignIn?");     
                HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);

                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("email", emailText));
                params.add(new BasicNameValuePair("Password", passwordText));
                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
                writer.write(getQuery(params));
                writer.flush();
                writer.close();
                os.close();

这样可以吗?另外,如果我要使用这种方法,我该如何获得响应?

【问题讨论】:

标签: android http post endpoint


【解决方案1】:

您可以使用Android Asynchronous Http Client library:

final AsyncHttpClient asyncHttpClient=new AsyncHttpClient();
    //Add Parameter
    RequestParams requestParams=new RequestParams();
    requestParams.put("email", emailText);
    requestParams.put("Password", passwordText);

    //Chose one from two method in below

    //send with get method
    asyncHttpClient.get("http://123.456.78.9/Dev/SignIn", requestParams, new TextHttpResponseHandler() {
        @Override
        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

        }

        @Override
        public void onSuccess(int statusCode, Header[] headers, String responseString) {
            System.out.println(responseString);
        }
    });

    //send with post method
    asyncHttpClient.post("http://123.456.78.9/Dev/SignIn", requestParams, new TextHttpResponseHandler() {
        @Override
        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

        }

        @Override
        public void onSuccess(int statusCode, Header[] headers, String responseString) {
            System.out.println(responseString);
        }
    });

但你必须在你的 gradle 中添加这个库

compile 'com.loopj.android:android-async-http:1.4.9'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2023-03-26
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多