相关疑难解决方法(0)

Volley JsonObjectRequest发布请求无效

我正在使用android Volley提出请求.所以我使用这段代码.我不明白一件事.我检查我的服务器,params始终为null.我认为getParams()不起作用.我该怎么做才能解决这个问题.

 RequestQueue queue = MyVolley.getRequestQueue();
        JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,SPHERE_URL,null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        System.out.println(response);
                        hideProgressDialog();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                      hideProgressDialog();
                    }
                }) {
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("id","1");
                params.put("name", "myname");
                return params;
            };
        };
        queue.add(jsObjRequest);
Run Code Online (Sandbox Code Playgroud)

android android-volley

77
推荐指数
3
解决办法
14万
查看次数

使用getHeader和getParams时,Volley Post JsonObjectRequest忽略参数

我正在尝试连接API url ="api adress",它接受两个头类型application/json来响应json和application/xml以在xml中重新定义.我需要使用json参数命中JSON,并且响应也将采用json格式.使用android volley Post请求和JsonObjectRequest设置头使用getHeaders它连接到服务器但getParams设置参数不起作用.

RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
            Constants.BASE_URL + Constants.LOGIN, null, response,
            response_error) {
        /**
         * Passing some request headers
         * */
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/json");
            return headers;
        }
         @Override
         protected Map<String, String> getPostParams()
         throws AuthFailureError {
         // TODO Auto-generated method stub
            Map<String, String> params = new HashMap<String, String>();
            params.put("key", "value");
            return params;
         }
    };
    // implementation of listeners …
Run Code Online (Sandbox Code Playgroud)

post android json content-type android-volley

10
推荐指数
2
解决办法
2万
查看次数

如何使用自定义对象作为参数创建Volley JSONObject请求?

我正在尝试使用Volley库将JSONObject POST请求发送到服务器,该服务器接受2个参数,一个对象(地址)和一个不同对象列表(租户).

当我尝试发出请求时,第一个参数(地址)在发送之前由Volley格式化,并且服务器不接受该请求.

我的请求看起来像这样:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, SERVER_URL,
    postPropertyJSONObject, responseListener, errorListener)
Run Code Online (Sandbox Code Playgroud)

我的postPropertyJSONObject是这样创建的:

JSONObject obj = new JSONObject();
obj.put("Address", convertAddressToJson(property.getAddress()).toString());
obj.put("Tenants", prop.getTenantList());
Run Code Online (Sandbox Code Playgroud)

convertAddressToJson()方法如下所示:

JSONObject jsonObject= new JSONObject();
jsonObject.put("Building", address.getBuilding());
jsonObject.put("Street", address.getStreet());
jsonObject.put("Town", address.getTown());
jsonObject.put("ZipCode", address.getZipCode());
jsonObject.put("County", address.getCounty());
jsonObject.put("Country", address.getCountry());
Run Code Online (Sandbox Code Playgroud)

我试过传递Address对象,但这根本没有序列化,所以它也不起作用.我还尝试在请求中使用的JSONObject的"Address"字段中传递Address.toString(),但这也不起作用.

我的Property对象的getAddress()方法返回一个Address对象,如下所示:

public class Address {

    private String Street;
    private String Building;
    private String Town;
    private String ZipCode;
    private String County;
    private String Country;
    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

当我在传递地址之前记录地址时,请求看起来像这样:

{"Town":"MyTown","Street":"MyStreet","County":"MyCounty","Country":"MyCountry",
 "ZipCode":"MyZipCode","Building":"MyBuilding"}
Run Code Online (Sandbox Code Playgroud)

但是当服务器记录它收到的内容时,它看起来像这样:

{\"Town\":\"MyTown\",\"Street\":\"MyStreet\",\"County\":\"MyCounty\",
 \"Country\":\"MyCountry\",\"ZipCode\":\"MyZipCode\",\"Building\":\"MyBuilding\"}"
Run Code Online (Sandbox Code Playgroud)

Volley应用的这种格式似乎正在改变我通过我的请求传递的价值所以任何人都可以告诉我是否有更好的方法来处理这个应该相对简单的任务?我使用String和Integer值向同一服务器发出了请求,但在尝试将自定义类作为参数传递时遇到了这个问题.

编辑

使用wbelarmino的提示,我切换到使用hashmap存储我的自定义对象并从中创建了一个JSONObject:

HashMap<String, Address> …
Run Code Online (Sandbox Code Playgroud)

parameters serialization android json android-volley

10
推荐指数
1
解决办法
4万
查看次数

Android Volley Caching具有不同的POST请求

我正在使用Android Volley来缓存请求,当我使用GET时这很好用,但我出于某些原因切换到使用POST.现在我想用不同的POST数据缓存相同的URL.

  • 请求1 - > URL1,POST数据="Cat = 1"
  • 请求2 - > URL1,POST数据="Cat = 2"
  • 请求3 - > URL1,POST数据="Cat = 3"

这可以通过Android Volley来完成

android-volley

7
推荐指数
1
解决办法
2329
查看次数

Android:Volley HTTP Request自定义标头

运行应用程序时出现以下错误:BasicNetwork.performRequest:意外的响应代码401

我需要传递电子邮件,密码和令牌来访问URL,但它无法正常工作

我上周开始学习android,我不太了解

package quest.testvolley;

import com.android.volley.AuthFailureError;
import com.android.volley.VolleyLog;
import com.kpbird.volleytest.R;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONObject;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class MainActivity extends Activity {

    private String TAG = this.getClass().getSimpleName();
    private ListView lstView;
    private RequestQueue mRequestQueue;
    private ArrayList<NewsModel> arrNews ;
    private LayoutInflater …
Run Code Online (Sandbox Code Playgroud)

android httprequest digest-authentication android-volley

6
推荐指数
1
解决办法
2万
查看次数

Volley没有发送带参数的帖子请求.

我有以下代码(Volley Library By Google)向我的php服务器发送POST请求并获取信息.我没有检查isset($_POST['id'])PHP 尝试代码,代码工作正常.在我开始检查时购买,php会跳过if语句并转到else意味着代码没有params正确发送.我怎样才能解决这个问题?

RequestQueue queue = Volley.newRequestQueue(Chat.this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
        CHAT_URL_FEED, null,
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d("THISSSSSSSS", response.toString());
                if (response != null) {
                    parseChatJsonFeed(response);
                }
            }
        }, new Response.ErrorListener(){

    @Override
    public void onErrorResponse(VolleyError error){
        VolleyLog.d("Here", "Error: " + error.getMessage());
    }
}) {

    @Override
    protected Map<String, String> getParams() {
        Map<String, String> params = new HashMap<String, String>();
        params.put("id", id);
        return params;
    }

};

queue.add(jsonObjReq);
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下代码:

RequestQueue queue = Volley.newRequestQueue(Chat.this); …
Run Code Online (Sandbox Code Playgroud)

android android-volley

3
推荐指数
1
解决办法
5962
查看次数

无法在Android中通过Volley以URL编码的形式发布参数

我正在尝试打一个api(用PHP编写)并用它发布参数。这是我的代码:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            url, null,
            new com.android.volley.Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    System.out.println("prerna succes volley "+response.toString());
                }
            }, new com.android.volley.Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {

            System.out.println("prerna fail volley "+error.toString());
        }
    })


    {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> pars = new HashMap<String, String>();
            pars.put("Content-Type", "application/x-www-form-urlencoded");
            return pars;
        }


        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("action", "login");
            params.put("username", "abc@xyz.com");
            params.put("pass", "a");
            return params; …
Run Code Online (Sandbox Code Playgroud)

android android-volley

3
推荐指数
1
解决办法
927
查看次数

Android Volley POST 请求:在服务器端获取 GET 请求方法 (php)

我正在制作一个需要将 Post 请求发送到我的服务器的 android 应用程序,并且真的可以使用一些帮助!我一直在尝试使用 android Volley 发出这些请求。我在这里阅读了很多相关问题以及关于 android Volley 的各种文档来源,但是当我设法提出请求时,我不可能在服务器端以正确的方式接收发布的数据,我也不知道我做错了什么......我试过用stringRequest覆盖getParams()和自定义JsonObjectRequest并将我的数据作为参数。我在服务器端通过两个请求得到了不同的结果,但我仍然无法以正确的方式捕获它。

在我的服务器端,我的调试PHP 文件是这样的:

$content = file_get_contents("php://input");
$string = 'fileGetContents: ';
$json = json_decode($content, TRUE);
$string = 'fileGetContents: ';
$string .= $content;
$string .= ' -- json encoded: ';
$string .= json_encode($json);
$string .= ' -- Request Method: ';
$string .= $_SERVER['REQUEST_METHOD'];
$string .= ' -- $_REQUEST: ';
$string .= json_encode($_REQUEST);
$string .= ' -- $_POST: ';
$string .= json_encode($_POST);
$string …
Run Code Online (Sandbox Code Playgroud)

php post android httprequest android-volley

1
推荐指数
1
解决办法
5383
查看次数