日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

volley 调用php接口,使用Volley发送帖子请求并使用PHP接收

發布時間:2025/4/5 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 volley 调用php接口,使用Volley发送帖子请求并使用PHP接收 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在嘗試在我的項目中使用volley來處理我的所有HTTP請求,因為據我所知,這是最高效的請求。因此,我通過遵循此AndroidHive教程開始學習排球。

我的第一個GET請求成功。然后我轉到POST請求,但失敗了。我在Stack

Overflow上看到很多人在將volley的后期請求與PHP結合在一起時遇到問題。我相信我們無法使用常規方法來訪問它,$_POST[""]因為凌空將JSON對象發送到我們指定的URL。

我嘗試了很多解決方案,但沒有成功。我猜應該有一種將volley與PHP結合使用的簡單標準方法。所以我想知道我該怎么做才能在我的PHP代碼中接收volley發送的json對象。

還有如何檢查截擊是否真的在發送JSON對象?

我的凌空代碼發送簡單的發帖請求:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,

url, null,

new Response.Listener() {

@Override

public void onResponse(JSONObject response) {

Log.d(TAG, response.toString());

pDialog.hide();

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

VolleyLog.d(TAG, "Error: " + error.getMessage());

pDialog.hide();

}

}) {

@Override

protected Map getParams() {

Map params = new HashMap();

params.put("name", "Droider");

return params;

}

};

// Adding request to request queue

AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

我的用于接收json對象的PHP代碼:( 我很確定這是錯誤的方式,我在PHP中不太好)

$jsonReceiveData = json_encode($_POST);

echo $jsonReceivedData;

?>

我也嘗試了很多在PHP中接受JSON對象的方法 echo file_get_contents('php://input');

結果

null

編輯(感謝格魯吉亞·貝納托斯的正確方法)

正如您提到的,我創建了該類,其類名稱CustomRequest如下:

import java.io.UnsupportedEncodingException;

import java.util.Map;

import org.json.JSONException;

import org.json.JSONObject;

import com.android.volley.NetworkResponse;

import com.android.volley.ParseError;

import com.android.volley.Request;

import com.android.volley.Response;

import com.android.volley.Response.ErrorListener;

import com.android.volley.Response.Listener;

import com.android.volley.toolbox.HttpHeaderParser;

public class CustomRequest extends Request{

private Listener listener;

private Map params;

public CustomRequest(String url, Map params,

Listener reponseListener, ErrorListener errorListener) {

super(Method.GET, url, errorListener);

this.listener = reponseListener;

this.params = params;

}

public CustomRequest(int method, String url, Map params,

Listener reponseListener, ErrorListener errorListener) {

super(method, url, errorListener);

this.listener = reponseListener;

this.params = params;

}

@Override

protected Map getParams() throws com.android.volley.AuthFailureError {

return params;

};

@Override

protected void deliverResponse(JSONObject response) {

listener.onResponse(response);

}

@Override

protected Response parseNetworkResponse(NetworkResponse response) {

try {

String jsonString = new String(response.data,

HttpHeaderParser.parseCharset(response.headers));

return Response.success(new JSONObject(jsonString),

HttpHeaderParser.parseCacheHeaders(response));

} catch (UnsupportedEncodingException e) {

return Response.error(new ParseError(e));

} catch (JSONException je) {

return Response.error(new ParseError(je));

}

}

}

現在在我的活動中,我打電話給以下人員:

String url = some valid url;

Map params = new HashMap();

params.put("name", "Droider");

CustomRequest jsObjRequest = new CustomRequest(Method.POST, url, params, new Response.Listener() {

@Override

public void onResponse(JSONObject response) {

try {

Log.d("Response: ", response.toString());

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError response) {

Log.d("Response: ", response.toString());

}

});

AppController.getInstance().addToRequestQueue(jsObjRequest);

我的PHP代碼如下:

$name = $_POST["name"];

$j = array('name' =>$name);

echo json_encode($j);

?>

現在,它返回正確的值:

Droider

總結

以上是生活随笔為你收集整理的volley 调用php接口,使用Volley发送帖子请求并使用PHP接收的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。