Code Monkey home page Code Monkey logo

nohttp's Issues

上传文件时,调用request.cancle()无法取消上传

已测试,确实存在上传无法取消的问题,复现方法很简单,只需在sample项目中的上传代码中增加取消下载功能即可,经测试,在上传过程中,调用Request.cancle(),Request.cancelBySign(),RequestQueue.cancelBySign()以及RequestQueue.cancelAll()均无法停止上传,OnUploadListener中的回调方法依然会被调用,跪求 @Y0Landa 大神解决。测试系统为Android5.1.1,测试设备为Google Nexus 9。

请教一个问题

使用nohttp,如何将网络请求单独写在一个类里面,然后回调到对应的activity或fragment里面

hi

前排

多個文件上傳問題?

開發者大大您好,我想上傳多個檔案,以下是我的部分代碼

File file1 = new File(Environment.getExternalStorageDirectory().getPath()+"/xxx.txt");
File file2 = new File(Environment.getExternalStorageDirectory().getPath()+"/yyy.txt");

BasicBinary binary1 = new FileBinary(file1);
BasicBinary binary2 = new FileBinary(file2);

request.add("file", binary1);
request.add("file", binary2);

requestQueue.add(NOHTTP_WHAT_TEST, request, onResponseListener);

php端接收:

600 * 1024){ echo "file size invalid, size > 600kb"; }else{ //如果出错就输出错误信息 if($_FILES["file"]["error"] > 0){ echo "upload file error !"; }else{ //没有错误,就拷贝上传的文件到指定的目录 $name = $_FILES["file"]["name"]; $dir = "upload/"; //如果目录不存在,就创建 if(!file_exists($dir)){ mkdir("upload/"); } //判断文件是否已存在 if(file_exists("upload/" . $name)){ echo "file exist"; }else{ //指定目录下不存在文件,则拷贝文件 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "upload file complete"; } } } ``` ?>

上傳之後只會有 yyy.txt ,xxx.txt好像不會被上傳,是哪邊代碼有少打嗎?

還請大神賜教。

能傳入JsonObject嗎?

開發者大大您好,傳入資料的時候,我想用JsonObject,但是在request.add( object );的時候,好像只能add字串,不能add(jsonObject)嗎?

因為在後台php程式碼裡面,我想把傳入的json解析,這樣實作上比較方便。

JSONObject object = new JSONObject();
try 
{
    object.put("member_account","test");
    object.put("member_password","test");
    object.put("member_email","[email protected]");
}
catch(JSONException e)
{
    e.printStackTrace();
}

request.add( object );

问问有关架构的东西

达哥 最近看了nohttp的源码 我怎么感觉你的架构 和Volley的架构很相似 是不是你在开发的时候 参考了Volley的东西

在教程中首先注明要先初始化

我首次使用该框架,按照网上的教程写了个简单的发送get的请求,在运行时报错才知道需要先在Application中先初始化,然而几乎在所有的教程中都没有写明这个一点,希望作者能加上,免得下次新手在使用的过程中才发现需要先初始化

java.net.SocketException: sendto failed: EPIPE (Broken pipe)

java.net.SocketException: sendto failed: EPIPE (Broken pipe)
at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:546)
at libcore.io.IoBridge.sendto(IoBridge.java:515)
at java.net.PlainSocketImpl.write(PlainSocketImpl.java:504)
at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:37)
at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266)
at okio.Okio$1.write(Okio.java:78)
...
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
at java.lang.Thread.run(Thread.java:818) 

sendto failed: EPIPE (Broken pipe),swankjesse的回答:That's working as designed. Sometimes you lose network connectivity.

Please see here: square/okhttp#1775

response.isSucceed()这个方法的逻辑有问题

response.isSucceed()这个方法好像并不能用来判断请求是否成功啊. 我试了, 明明状态已经是404了, response.isSucceed()返回的却是true, 我觉得应该根据code是否在200到300之间来判断是否是success

您好,怎么解决中文乱码的问题

您好,目标网页是gbk编码的,用get方法获取网页内容,在succeed里取出中文的时候乱码,请问怎么解决呢?

    public void onSucceed(int what, Response<String> response) {
        String result =  response.get()
        TextView tvRet = (TextView) findViewById(R.id.tvRet);
        tvRet.setText(result);
    }

咨询关于httplistener

在daemon中看到实现了一个接口HttpListener, 但是在nohttp源码中看到有OnResponseListener, 为什么不直接用OnResponseListener? 这样有什么好处吗?

文件下载出现问题

你好,我在你的demo的单个文件下载界面修改了一下,我要多个url顺序下载,我先把这些url创建DownloadRequest并保存到list里面,然后一个下载完成后就进行下一个下载,但是当我点击暂停时,就不能恢复下载了,我debug发现好像在点cancel的时候,blockquene没有把这个移除掉。希望帮忙确认一下是什么问题,谢谢。

几个小问题

  • 我看您在给出的 demo 里把 RequestQueue 的获取弄成单例了,但是这样是不是并发请求数就固定了,如果有特殊需要,还要自己再获取另一个可以指定并发请求数的 RequestQueue 呢?
  • 还有就是在首页 StartActivity 退出时执行了三步操作:先取消所有请求,然后停止所有请求队列,最后杀死进程,请问这样是必要的也必须按照这个顺序来吗?

CallServer

怎么没有CallServer这个方法?
CallServer.getDownloadInstance().add(0, downloadRequest, downloadListener);
CallServer 报错

RequestMethod.class的问题

public boolean allowRequestBody() {
boolean allowRequestBody = this == POST || this == PUT || this == PATCH || this == DELETE;
if (Build.VERSION.SDK_INT < AndroidVersion.LOLLIPOP)
allowRequestBody = allowRequestBody && this != DELETE;
return allowRequestBody;
}
目前在安卓6.0上delete方法服务器端拿不到参数,最终追到这里,不知道版主这个方法为什么这样写

支持缓存自定义key吗?

因为在客户端请求的时候 经常会有参数是动态的!okhttp默认是url+参数 md5生产的key!造成带动态参数的缓存就没有意义了!

有提问

添加到队列

RequestQueue requestQueue = NoHttp.newRequestQueue();
// 或者传一个并发值,允许三个请求同时并发
// RequestQueue requestQueue = NoHttp.newRequestQueue(3);

// 发起请求
requestQueue.add(what, request, responseListener);
  上面添加到队列时有一个what,这个what会在responseLisetener响应时回调给开发者,所以我们可以用一个responseLisetener接受多个请求的响应,用what来区分结果。而不用像有的框架一样,每一个请求都要new一个回调。

这个而不用像有的框架一样,每一个请求都要new一个回调。 我觉得还是每次请求都new 一个比较好。
这样不得把很多request 结果处理写到一个listener里头啊

thread interrupted错误

android 6.0 RequestQueue 去 start() 一个 stringRequest 时,报thread interrupted无法连接上网络,能帮忙分析一下错误吗?

java.io.InterruptedIOException: thread interrupted
at com.android.okhttp.okio.Timeout.throwIfReached(Timeout.java:145)
at com.android.okhttp.okio.Okio$1.write(Okio.java:73)
at com.android.okhttp.okio.AsyncTimeout$1.write(AsyncTimeout.java:155)
at com.android.okhttp.okio.RealBufferedSink.flush(RealBufferedSink.java:221)
at com.android.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:141)
at com.android.okhttp.internal.http.HttpTransport.finishRequest(HttpTransport.java:52)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:903)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:789)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:443)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501)
at com.yolanda.nohttp.BasicConnection.getConnection(BasicConnection.java:88)
at com.yolanda.nohttp.rest.HttpRestConnection.sendRequestHandleRetry(HttpRestConnection.java:135)
at com.yolanda.nohttp.rest.HttpRestConnection.requestNetwork(HttpRestConnection.java:84)
at com.yolanda.nohttp.rest.HttpRestParser.parserRequest(HttpRestParser.java:51)
at com.yolanda.nohttp.rest.RequestDispatcher.run(RequestDispatcher.java:101)

怎么获取nohttp的错误消息

比如超时、网络错误等情况,我需要在 APP 中针对每种情况进行处理。请问如何能获取 nohttp 中这类错误消息?

android studio

android studio 为什么不能直接添加依赖,我搜索不到nohttp

Status Code 302

对于Status Code 为 302 的这类访问,会自动转向目标URL,但是我只想要当前URL的Cookie这个怎么解决。
比如放问AURL,Status Code为302 跳转到BURL,但是我只想要AURL响应头里的Cookie。
求解决 谢谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.