簡體   English   中英

為什么我沒有從OkHttp3接收POST var? (Android Studio)

[英]Why don't I receive POST vars from OkHttp3? (Android Studio)

我已經在這里回答了我自己的問題。 請參閱第一個代碼塊,其中我使用php:// input來獲取發布的數據。

我正在嘗試將發布請求從我的應用發送到Web服務器,並且正在使用PHP檢查發布變量:

if( isset( $_POST['name'] ) ){
    echo json_encode(['status' => 1]);
}else if( $posted_data = (string) @file_get_contents('php://input') ) {
    echo json_encode(['status' => 2]);
}else{
    echo json_encode($_POST);
}

該請求始終返回並且為空的json編碼數組。

我正在使用最新的Android Studio和最新的OkHttp,com.squareup.okhttp3:okhttp:3.4.1。 對我來說,這就像Android Studio中OkHttp的“ Hello World”。

在MainActivity.java中:

public void postSomething(View view) {
    String url = "https://example.com/json_api_test.php";
    String json = "{\"name\":\"cholula\"}";
    OkHttpPostHandler handler = new OkHttpPostHandler();
    String result = "";
    try {
        result = handler.execute(url, json).get();
    } catch (Exception e) {
        e.printStackTrace();
    }
    displayPostResponse(result + "\n");
}

我的OkHttpPostHandler.java:

public class OkHttpPostHandler extends AsyncTask<String, Void, String> {

    OkHttpClient client = new OkHttpClient();

    public static final MediaType JSON
            = MediaType.parse("application/json; charset=utf-8");

    @Override
    protected String doInBackground(String... params) {

        RequestBody body = RequestBody.create(JSON, params[1]);

        Request request = new Request.Builder()
                .url(params[0])
                .post(body)
                .build();

        try {
            Response response = client.newCall(request).execute();
            return response.body().string();
        }
        catch( Exception e ){
            return "HTTP Request Error";
        }
    }
}

調試時,我可以看到params [1]值是預期的類似於json的字符串,但這是我最后一次看到它。

我已經嘗試過多種方式形成json,所以我不確定這是否是問題。 我只是不明白為什么在發布請求到達服務器時為什么看不到發布的var。

如何查看網絡服務器上發布的var? 我究竟做錯了什么? 我僅使用Android Studio和Java不到一個星期,所以我一無所知。 我真的在互聯網上四處尋找答案,因此在此處發布是最后的選擇。

謝謝!

事實證明,必須使用php:// input來獲取發布的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM