相关疑难解决方法(0)

Android网络库的比较:OkHTTP,Retrofit和Volley

来自iOS开发人员学习Android的两部分问题,研究Android项目,该项目将发出从JSON到图像到音频和视频的流媒体下载的各种请求:

  1. 在iOS上,我广泛使用了AFNetworking项目.是否有适用于Android的等效库?

  2. 我已经阅读了OkHTTP和Square的改造,以及Volley,但还没有与他们一起开发的经验.我希望有人可以提供一些最佳使用案例的具体例子.从我所看到的,看起来OkHTTP是三者中最强大的,并且可以处理这个项目的要求(如上所述).

networking android android-networking retrofit

563
推荐指数
7
解决办法
23万
查看次数

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万
查看次数

你如何使用Android Volley API?

我正在考虑在我的下一个项目中实施Android Volley库(关于Volley的Google IO演示文稿).

但是,我没有为该库找到任何严肃的API.

如何JSON使用Volley 上传文件,执行POST/GET请求以及添加Gson解析器作为解析器?

源代码

android android-volley

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

Volley没有为我的自定义请求调用getParams?

请问,Volley会自动将我的GET参数添加到URL吗?对我来说,它不是这样工作,也是在查看源代码时,我无法找到任何getParams方法的调用.那么我应该自己构建URL吗?这根本不是问题,我只是认为当有像getParams这样的方法时,它可以为我做到这一点:)

更新:以下是我的代码..

public class BundleRequest extends com.android.volley.Request<Bundle>{

    private String token;
    private OnAuthTokenValidatorResponseListener mListener;
    private final Map<String, String> mParams =  new HashMap<String, String>();;


    public BundleRequest(int method, String url,  Response.ErrorListener listener) {
        super(method, url, listener);
    }

    public BundleRequest(int method, String url,OnAuthTokenValidatorResponseListener providedListener,  Response.ErrorListener listener, String token) {
        super(method, url, listener);
        this.token = token;
        mListener = providedListener;
        mParams.put(AuthenticatorConfig.TOKEN_VALIDATION_PARAMNAME, token);

    }

    @Override
    public Map<String, String> getParams() throws AuthFailureError {
        return mParams;
    }




    @Override
    protected Response<Bundle> parseNetworkResponse(NetworkResponse httpResponse) {
        switch (httpResponse.statusCode) {
            case AuthTokenValidator.TOKEN_VALID_RESPONSE_CODE:
                //token …
Run Code Online (Sandbox Code Playgroud)

android get android-volley

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

如何使用齐射将数据(json)加载到回收器视图中

我在我的应用程序中实现了recyclerview,现在我需要从服务器获取数据,我才知道volley是获取数据的最佳方式.我在网上搜索但我无法找到相同的教程.

这是我在我的代码中初始化recyclerview的方法.(具有硬编码数据集)

 mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(linearLayoutManager);

    mAdapter = new CardAdapter();
    mRecyclerView.setAdapter(mAdapter);  
Run Code Online (Sandbox Code Playgroud)

这是适配器代码.

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {

ArrayList<BusRouteNameDetails> mItems;
public int TAG=0;

public CardAdapter() {
    super();
    mItems = new ArrayList<>();
    BusRouteNameDetails routename = new BusRouteNameDetails();
    routename.setName("xyz");
    routename.setNumber("X4");

    mItems.add(routename);

    routename = new BusRouteNameDetails();
    routename.setName("xyz");
    routename.setNumber("X4");

    mItems.add(routename);

    routename = new BusRouteNameDetails();
    routename.setName("xyz");
    routename.setNumber("X4");

    mItems.add(routename);

    routename = new BusRouteNameDetails();
    routename.setName("xyz");
    routename.setNumber("X4");

    mItems.add(routename);


    routename = new BusRouteNameDetails();
    routename.setName("xyz");
    routename.setNumber("X4");

    mItems.add(routename);
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, …
Run Code Online (Sandbox Code Playgroud)

json android-volley android-recyclerview

5
推荐指数
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 GET方法?

我知道如何使用Volley GET方法进行登录,但如果需要指定特定的"id"怎么办?我使用intent.putExtra将列表项的"id"从远程数据库传递到另一个活动.在下一个活动中,我将如何利用Volleys的GET方法使用通过"id"传递的另一个表来解析和显示数据?

在浏览器中,我可以使用以下内容来获取具有指定url和参数的响应:

http://localhost/demoapp/fetch.php?pid=2
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将该URL传递给Volley请求并在列表视图中显示响应.像这样的东西:

"http://localhost/demoapp/fetch.php?pid=" + pid
Run Code Online (Sandbox Code Playgroud)

其中"pid"将是相应id的传递字符串.

编辑:PHP代码

    <?php
include_once("config.php");

$query=mysqli_query($con,"SELECT * FROM comments WHERE pid=".$_GET['pid']);

$array;
while($result=mysqli_fetch_assoc($query)){

$array[]=$result;
}

echo json_encode($array);
?>
Run Code Online (Sandbox Code Playgroud)

编辑2:JAVA代码 主要活动

    JsonArrayRequest request = new JsonArrayRequest(url+url_file,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString()); try {
                            for(int i=0;i<response.length();i++){
                                String pid=response.getJSONObject(i).getString("pid");
                                String name=response.getJSONObject(i).getString("product_name");
                                String img;
                                String thumb = response.getJSONObject(i).getString("product_thumb");
                                String detail = response.getJSONObject(i).getString("product_detail");
                                String rating = response.getJSONObject(i).getString("product_rating");

                                img = response.getJSONObject(i).getString("product_pic");

                                rowdata.add(new ProductRowData(pid,name,img,thumb,detail,rating));
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch …
Run Code Online (Sandbox Code Playgroud)

php android android-volley

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

Kotlin vs Java @Overrides

如此处所示,/sf/answers/1164760691/,在Java中,您可以在公开时覆盖声明的类的功能

但是我想知道如何在Kotlin中完成相同的代码,我已经尝试了很多,但没有找到关于这个主题的任何地方.我可以用Java来做这个,但我的其余代码都在Kotlin中,而且我不能忍受这种怀疑; Kotlin对我来说感觉像是一个很好的工具,想要学习它.

java android kotlin

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

Volley忽略Cookie标头请求

美好的一天!

我的应用程序使用简单的http客户端 - 服务器通信,在客户端与Volley库建立.首先,我启动一个授权请求:

public class AuthenticationRequest extends StringRequest {

    private static final String TAG = AuthenticationRequest.class.getSimpleName();

    private String login;
    private String password;

    public AuthenticationRequest(int method,
                                 String url,
                                 Response.Listener<String> listener,
                                 Response.ErrorListener errorListener) {
        super(method, url, listener, errorListener);
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public void setPassword(String password) {
        this.password = password;
    }

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

    @Override
    protected Response<String> parseNetworkResponse(NetworkResponse response) …
Run Code Online (Sandbox Code Playgroud)

android androidhttpclient android-volley android-cookiemanager

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