【问题标题】:How do I send POST information from my android application to a PHP website [duplicate]如何将 POST 信息从我的 android 应用程序发送到 PHP 网站 [重复]
【发布时间】:2017-05-04 19:48:15
【问题描述】:

我在我的 android 布局中构建了一个表单,并且有一个 Activity 可以从该表单中获取一些文本并将其附加到一个变量。

我还有一个 PHP 表单,它可以处理包含文本的 POST 变量。

看到 HttpClient 已被弃用(留下一堆死的 stackOverflow 答案),发送 POST 的最新方法是什么?

我不是在寻找任何复杂的东西 - 只是“这是您连接和发送单独变量的方式。”

更新:我希望得到一个不需要我使用任何外部课程的答案。 android不是独立有这个能力的吗?

【问题讨论】:

标签: php android post urlconnection


【解决方案1】:

这是一个连接和发送一个单独变量的小例子

dependencies {
     compile 'com.squareup.okhttp3:okhttp:3.1.2'
    }

那么你可以得到这些导入

import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;

异步任务

 private class NotifyPassengerDriverArrival extends AsyncTask<Void, Void, String> {

        private final String url = Constants.API_PATH + "notify_driver_location?token=" + Constants.TOKEN;
        private final OkHttpClient client = new OkHttpClient();

        @Override
        protected void onPreExecute() {
         super.onPreExecute();
        }

        @Override
        protected String doInBackground(Void... voids) {

            try {
                FormBody formBody = new FormBody.Builder()
                        .add("passenger_id", passengerID)
                        .build();
                Request.Builder builder = new Request.Builder();
                builder.url(url);
                builder.post(formBody);
                Request request = builder.build();

                okhttp3.Response response = client.newCall(request).execute();
                if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

                if (response.code() != 200) {
                    return null;
                }

                return "success";
            } catch (Exception e) {
                return null;
            }

        }


        @Override
        protected void onPostExecute(String data) {
            if (data == null) {
                return;
            }
            else {
                Toast.makeText(ReadyToStartTaxiJourneyActivity.this, "You are almost come to pickup location.", Toast.LENGTH_LONG).show();

            }
           super.onPostExecute(data);
        }
    }

顺便说一句,答案并没有死!如果是这样..可能是因为你只挖坟场!

【讨论】:

  • 并非所有人都死了 - 只是那一个死了。
  • 无论如何希望这个答案可以帮助你:)
  • 顺便说一句,如果你使用client.newCall(request).enqueue,OkHttp 不需要 AsyncTask。看这里。 github.com/square/okhttp/wiki/Recipes#asynchronous-get
  • @cricket_007 不知道谢谢分享 :))
【解决方案2】:

您可以使用 Android 异步 HTTP 客户端

http://loopj.com/android-async-http/

分级

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

静态 HTTP 客户端

public class RestClient {

    public static final String TAG = RestClient.class.getSimpleName();

    private static final String BASE_URL = "http://your-site.com/api/v1/whatever";

    private static AsyncHttpClient client = new AsyncHttpClient();

    public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        client.get(getAbsoluteUrl(url), params, responseHandler);
    }

    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        client.post(getAbsoluteUrl(url), params, responseHandler);
    }

    private static String getAbsoluteUrl(String relativeUrl) {
        return BASE_URL + relativeUrl;
    }
}    

客户端代码

...
RequestParams params = new RequestParams();
params.put("THE_KEY", "THE_VALUE");
...

AsyncHttpClient client = new AsyncHttpClient();
client.post("YOUR_URL", new AsyncHttpResponseHandler() {

@Override
public void onStart() {
    // called before request is started
}

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
    // called when response HTTP status is "200 OK"
}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
    // called when response HTTP status is "4XX" (eg. 401, 403, 404)
}

@Override
public void onRetry(int retryNo) {
    // called when request is retried
}
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2021-02-06
    • 2012-10-23
    • 2019-12-09
    • 2020-01-04
    • 2016-03-30
    相关资源
    最近更新 更多