Closed jianxiaobai999 closed 2 years ago
希望你发出HttpFailureException
包含的堆栈信息, 它包含具体错误信息
内核是完全使用的okHttp基本上不会出现请求相关问题, 请仔细检查堆栈信息描述
你使用标签过滤掉了, 请查看完整的错误堆栈信息而不是OKPRFL_
HttpFailureException
该类表示Http请求在服务器响应之前失败, 例如无网络HttpResponseException
该类表示Http请求在服务器响应成功后失败
HttpFailureException
该类表示Http请求在服务器响应之前失败, 例如无网络HttpResponseException
该类表示Http请求在服务器响应成功后失败
可以保证网络良好,换其他地址,访问正常,你说的日志这个快,我没有找到更多相关信息。。。
你使用Net_LOG
来过滤日志或者查看当前应用的所有日志
看样子是你自定义输出错误信息, 但是只输出message
导致没有堆栈信息了
你看你都把TAG改成了"错误", 你应当保留堆栈信息来便于排查问题的
我是把请求的Get
请保留堆栈信息(没有该信息无法排错), 比如如下代码
Log.e("NET_TAG", "捕获错误", e)
这是具体错误原因, java.io.IOException : unexpected end of stream on
我这里尝试没有请求200没有任何问题, 你得自己排查了这不是Net导致的问题, 如果你觉得有疑问可以使用OkHttp标准请求方法尝试
java.io.IOException : unexpected end of stream on
这个错误我该怎么处理,我用Get返回string
这个是说我地址错误?
返回string那不就请求成功了?
不是,我意思是,我请求这个地址要返回个string,单结果是报这个错了,这个错是因为我请求地址有问题吗
这个错误你搜索吧, 服务器在返回数据给你的时候意外终止流导致的异常, 问题不在于客户端
而且我无法复现你的异常, 你可以尝试去除一些不必要参数(使用Net的demo来发起请求)或者使用Postman等工具进行问题排查
百度了一下说是请求的url可能有问题,但是我的地址本来就是这样的,你在demo中没有复现吗,用我的那个地址?
有问题先用demo复现吧, 我没有多余精力或时间来猜测或者排查业务问题
有问题先用demo复现吧, 我没有多余精力或时间来猜测或者排查业务问题
好的,我在看看吧,谢谢
我建议你发生网络请求错误先用接口测试工具然后使用Net的demo来复现, 避免本地网络导致的问题影响你的判断
网络问题很多的, 甚至可能是OkHttp自身问题
我建议你发生网络请求错误先用接口测试工具然后使用Net的demo来复现, 避免本地网络导致的问题影响你的判断
网络问题很多的, 甚至可能是OkHttp自身问题
嗯嗯,我用postman或网页直接访问,都正常的,项目中不行,估计demo也一样,毕竟就是个简单的请求
你实际项目中很可能默认自带很多请求头, 这些多余参数可能也会导致问题发生
所以请使用没有任何多余请求参数的请求来排查问题, 还有问题请使用OkHttp原始请求, 还有问题那就属于OkHttp的了
Net基本上没有对请求做干预, Netv3运行到至今没有出过网络相关bug
应该就是库的问题了,我用Net.get()方法请求返回string正常,用Get().awit()返回字符串就不正常
那你fork复现问题, 我来看
希望你用OkHttp原始请求尝试一次
经过多次验证,发现是因为设置了两次user-agent的原因,在全局拦截设置了header 在请求的时候设置了专用的header,就出现这个地址请求失败的问题了,这个是什么原理,设置两次user-agent就无法访问
我看Net框架请求日志上是把两个user-agent拼接后请求的,如果拼接后是设置了一个user-agent的话应该是可以访问的,但实际上不能访问,是因为框架在请求的时候还是按照两个user-agent请求的吗,这个有解决方法吗
请求头可以通过addHeader拼接成数组是常识,你应该使用setHeader来覆盖
请求头可以通过addHeader拼接成求组是常识,你应该使用setHeader来覆盖
明白了,是我的问题,谢谢
希望你多自己仔细排查问题,我已经多次建议过fork复现问题了,而不是第一时间问我为什么,因为这个项目是开源的
好的,我会多看看的,这个问题看了好久没找出原因,,我还想问一下就是都用setHeader(),最后的请求会在拦截器里覆盖成全局的header,这个怎么处理呀
覆盖全局不就是应该的吗?我不太知道你要怎么处理
全局的header 不应该是处理成可以被单独的特定请求的header覆盖才好点吗,就像设置的全局baseUrl 可以被请求得完整得http://**地址覆盖一样
拦截器在请求之后,你先弄明白先后顺序,所有网络请求都如此,你可以自己添加标签去在拦截器判断
哦哦,明白了
问题描述
请求报错:com.drake.net.exception.HttpFailureException
期望行为
希望看一下为什么会这样
如何复现
请求下面地址: http://*****
截图
异常堆栈信息或者手机截图/视频(拖拽到输入框即可上传)
版本