android OkHttpClient请求错误

2024-04-26

我正在尝试使用我的 Android 应用程序在 mysql 数据库中存储一些数据。我正在使用 okhttp3 发送请求,但在这一行出现错误:

client.newCall(request).execute();

我在本地机器和在线上尝试过,但它给了我同样的错误,这里是代码,

public class MainActivity extends AppCompatActivity {

    String token1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("MainActivity is :" + FirebaseInstanceId.getInstance().getToken());
        FirebaseMessaging.getInstance().subscribeToTopic("test");
        FirebaseInstanceId.getInstance().getToken();
        token1=FirebaseInstanceId.getInstance().getToken();
    }

    public void clicking(View view) {

        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("Token",token1)
                .build();

        okhttp3.Request request = new okhttp3.Request.Builder()
                .url("http://saleh923.byethost8.com/hii.html")
                .post(body)
                .build();

        try {
            client.newCall(request).execute();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }
}

这是日志:

 com.example.user.firebasenot E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.user.firebasenot, PID: 3280
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
        at android.view.View.performClick(View.java:5198)
        at android.view.View$PerformClick.run(View.java:21147)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
        at android.view.View.performClick(View.java:5198) 
        at android.view.View$PerformClick.run(View.java:21147) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
        at java.net.InetAddress.lookupHostByName(InetAddress.java:431)
        at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
        at java.net.InetAddress.getAllByName(InetAddress.java:215)
        at okhttp3.Dns$1.lookup(Dns.java:39)
        at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:172)
        at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:138)
        at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:80)
        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:178)
        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:129)
        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:98)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
        at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:170)
        at okhttp3.RealCall.execute(RealCall.java:60)
        at com.example.user.firebasenot.MainActivity.clicking(MainActivity.java:54)
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
        at android.view.View.performClick(View.java:5198) 
        at android.view.View$PerformClick.run(View.java:21147) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

错误消息说明了一切:

引起原因:android.os.NetworkOnMainThreadException

您不应该在主(也称为 UI)线程上发出网络请求。
您可以通过多种方式在不同的线程上发出此请求,以下是其中一种:

final OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder()
        .add("Token",token1)
        .build();

final okhttp3.Request request = new okhttp3.Request.Builder()
        .url("http://saleh923.byethost8.com/hii.html")
        .post(body)
        .build();

final Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            client.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

But okhttp使我们可以更轻松地使用入队方法 https://square.github.io/okhttp/3.x/okhttp/okhttp3/Call.html#enqueue-okhttp3.Callback-:

client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        e.printStackTrace();
    }

    @Override
    public void onResponse(Call call, final Response response) throws IOException {
        if (!response.isSuccessful()) {
            throw new IOException("Unexpected code " + response);
        }

        // you code to handle response
    }
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android OkHttpClient请求错误 的相关文章

  • 我如何访问警报内容提供商

    我正在尝试访问警报提供商以获取所有启用的警报信息 所以我写了这个 public static final Uri CONTENT URI Uri parse content com android deskclock alarm Conte
  • 为什么桌面 AES 文件 IO 与 Android AES 文件 IO 不兼容?

    我已将一个应用程序从 Android 移植到桌面 该应用程序使用 AES 加密一些私人数据 两个应用程序都能够加密和解密数据以供自己使用 但无法解密其他应用程序的数据 AES 密钥 IV 和算法是相同的 这两个应用程序之间的主要区别在于 a
  • 带 Retrofit 的简单登录表单

    我开始使用 Retrofit 但我坚持这个简单的步骤 我有一个登录表单 我正在尝试通过服务器进行身份验证 但我无法发送请求 这是我尝试过的 我的改造客户 private static OkHttpClient Builder httpCli
  • 从MySQL php中的特定列获取最大ID和最小ID

    我是新来的php现在尝试从中检索数据MySQL到安卓 这是我的工作细节 table In 检索总小时数函数 我想检索最短 ID 时间 and 最大 ID 超时 from MySQL到安卓通过php最后使用下面的代码来获取总小时数 假设 ID
  • Java:删除链表中的所有元素

    Java中如何删除链表中的所有元素without使用已经可用的clear 方法 这项练习的灵感来自于电话采访中收到的一个问题 说我可以用 C 来做这个 void DeleteAllElement ListElement head ListE
  • 用于将类文件转换为 Java 源代码的 Eclipse 插件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当源不可用时 是否有可用的 Eclipse 插件来反编译类文件 从 class 文件生成 java 源代码 类似于 Resharper 在
  • 如何在另一个 Gui 中启动 JADE Gui?

    如何在另一个 Gui 中启动 JADE Gui 假设我的 Gui 上有一个按钮 点击该按钮后 JADE Gui 将启动 这可能吗 如果是 怎么办 提前致谢 Regards 我假设 JADE Gui 你指的是 JADERMA http jad
  • Android EditText:在触摸时选择所有文本,并在用户开始输入时清除。

    我的应用程序中有一个编辑文本 当用户触摸编辑文本时 应选择整个文本 而当他开始输入文本时 应清除文本 一个例子是浏览器地址栏 有什么办法可以做到这一点吗 请帮助我 您可以使用以下方法选择 EditText 中的所有文本 android se
  • 如何正确使用 FirefoxOptions() 及其参数将其传递给 FirefoxDriver() 构造函数

    我在实例化 FirefoxDriver 时尝试使用 FirefoxOptions 如下所示 FirefoxOptions options new FirefoxOptions WebDriver localWebDriver new Fir
  • 源单元“_BuildScript_”中“语义分析”阶段出现异常

    评估根项目 android 时出现问题 配置项目 app 时出现问题 无法打开构建文件 C Users InFED Laptop Documents GitHub sustain and save android app build gra
  • 如何在 jformattedtextfield 中仅添加双精度值

    我需要格式化 jformattedtextfield 以便在运行时仅添加具有两位小数的双精度 浮点值 例如 15600 00 请帮我解决这个问题 谢谢 以下是有关如何执行此操作的示例 NumberFormat format DecimalF
  • 封闭实例的匿名类

    我正在阅读 Joshua Bloch 的 Effective Java 第二版 目前我在第 22 项 它描述了内部类和嵌套类 但我无法理解他这句话的意思 匿名类具有封闭实例当且仅当它们发生时 在非静态上下文中 有人能给我一个代码示例并解释它
  • 如何在 SnakeYaml 中解析 YAML 文件的一部分

    我是 YAML 新手 并且解析了一个 YAML 配置文件 如下所示 applications authentication service version 2 0 service url https myapp corp auth app
  • ExpandableListView 和复选框

    我正在 Android 中编写简单的过滤器并想使用ExpandableListAdapter与复选框 我创建列表或检查复选框没有问题 但我真的不知道如何记住选择 关闭组并再次打开后或当我尝试打开不同的组时 复选框会发生变化 我尝试在网上阅读
  • 在每个 Activity 上调用工具栏

    我的应用程序有一个工具栏 应该出现在每个视图上 目前 我在我的onCreate 我有每个活动的方法 Toolbar toolbar Toolbar findViewById R id toolbar setSupportActionBar
  • 规范注册 ID 和消息 ID 格式

    我的理解有问题Canonical Registration Id并让谷歌返回它 我特意注册了两次我的Android应用程序 以测试Canonical Registration Id 但是当我尝试向两者推送消息时Registration Id
  • 覆盖 VK_Tab 焦点操作

    再会 我正在向 jTextField 添加 keyevent 侦听器 以便如果用户按下 Tab 键 插入符号位置将转到 jtextField 内文本的末尾 这是我的代码 private void jTextField1KeyPressed
  • TextView 用字母打乱了我的话

    我的要求 创建 传入气泡 其宽度按内容排列 最大宽度为 90 我有这个标记
  • 进度对话框未显示在屏幕上

    我根据亲爱的 Mayank answer 编辑了我的代码 但它没有显示在方法开始之前在 displayMsg 方法中作为输入发送的任何消息 我应该说 MethodTest 是通过 nfc 和 onNewIntent Intent Inten
  • 在所有布局方法之后调用哪个 Activity 方法?

    我需要做一些事情Activity调用所有布局方法后 所有Views 已就位并且Activity已准备好显示 哪种方法可以做到这一点 如果你想获得视图的宽度或其他东西 这应该有效 将其添加到您的 Activity 的 onCreate 中 V

随机推荐

  • 如何在ggplot的facet_grid函数中应用下标

    我想使用 ggplot 绘制空气污染物与出生体重变化之间的关联结果 95 CI 我的数据格式是这样的 variable exposure period coef coef lb coef ub PM10 entire pregnancy 2
  • 如何从在 Cron 作业上运行的 Python 解锁 Gnome 密钥环?

    我正在连接一个 Python 脚本来与 cron 一起运行 在 Ubuntu 12 04 上 但身份验证不起作用 cron 脚本访问几个服务 并且必须提供凭据 存储这些凭证keyring很简单 只不过当 cron 作业实际运行时 无法检索凭
  • Map:如何获取与某个值关联的所有键?

    给定一个 Map 如何查找与特定值关联的所有键 例如 Map
  • 背包多重约束

    我有一个动态规划问题 我花了几个小时研究但没有结果 第一部分很简单 你有一背包物品 你必须最大化这些物品的价值 同时将它们保持在一定的重量以下 问题的第二部分是相同的 只是现在也有一个项目限制 例如 您可以放入袋子中的物品的最大价值是多少
  • 查看 PHP 闭包的源代码

    是否可以反映或以其他方式查看 PHP 闭包对象的源代码 也就是说 如果我做这样的事情 closure function return Hi There 然后是这样的 var dump closure PHP 输出 object Closur
  • 是否可以在activerecord中定义与SQL表达式对应的虚拟属性?

    我正在寻找类似虚拟属性的东西 但这可以在数据库级别上工作 假设我有一个字段age我想添加一个 虚拟字段 age quintile这等于age 5 但可以这样说 Person select age quintile agv height gr
  • Python 元组作为键慢吗?

    我正在尝试实现字典中排序元组的快速查找 回答 元组 3 8 是否有关联值 如果有 它是什么 的问题 令元组中的整数从下方以 0 为界 从上方以 max int 为界 我继续使用 Python 的 dict 但发现速度相当慢 解决此问题的另一
  • 获取以 UTC 表示的当前时间的最简单 PowerShell 方法

    我已查看该帖子在 PowerShell 中创建具有特定 UTC 日期时间的 DateTime 对象 https stackoverflow com questions 10487011 creating a datetime object
  • 非活动状态下的 Spring Boot 堆使用情况

    我在本地部署了一个非常简单的 spring boot 应用程序 它只有一个类 控制器 差不多就这样了 我注意到堆分配并不稳定 并且有峰值和突然下降 为什么会这样 我没有对应用程序进行过一次调用 A view from VisualVM 事实
  • 释放指针向量,但内存仍在使用中

    我不知道下面的代码有什么问题 我正在删除所有指针 但是当我使用 top 命令查看内存时 我可以看到仍然有大量内存分配给程序 我在这里缺少一些东西来释放内存吗 include
  • 重新加载 tslib 触摸屏校准

    背景 我正在开发一个基于 Qt 的大型 GUI 它处理与触摸屏的所有用户交互 该程序的设计使得用户不需要访问命令提示符即可执行任何操作 包括重新校准触摸屏 我写了一个 tslib 的模仿品ts calibrate作为运行的实用程序QWidg
  • 触发 Outlook 事件:更改签名

    有谁知道是否可以在 Outlook 2016 中触发签名更改事件 IE 模拟点击签名 如下图所示 我正在尝试根据选择的 发件人 地址自动更改签名 我可以捕获 发件人 地址更改 如所回答here https stackoverflow com
  • Android 布局:运行第二次布局

    我正在扩展 TextView 并加载自定义字体 我在列表视图中使用这个自定义文本视图 当我滚动列表时 有时会收到以下调试消息 布局期间 com sample CustomTextView 52afae4c V ED ID 0 27 27 4
  • 在 R 中使用 tcltk 在弹出窗口(表格小部件)中显示数据 - 为什么它会删除最后一行数据?

    我正在努力创建一个小部件来使用 tcl tk 在弹出窗口中查看表格 我正在遵循这个例子 http r 789695 n4 nabble com Tck tk help td1837711 html http r 789695 n4 nabb
  • Laravel 中的下拉选择表单

    我可以知道我的代码有什么问题吗 我在数据库中注册了三个用户类型名称 但是我的代码将导致三个下拉菜单 每个菜单上都有单独的用户类型名称 foreach user types as usertype div class form group F
  • Julia 中的指针解引用(unsafe_load(ptr) 有效,但 unsafe_wrap(Array, ptr, 1) 段错误)

    我正在尝试取消引用指针unsafe load and unsafe wrap 我发现unsafe load不过效果很好unsafe wrap如果取消引用指向可变结构的指针 则会崩溃 玩具示例 mutable struct Wrapper d
  • 在Android中解析HTML

    我正在尝试从网页解析 android 中的 HTML 由于该网页格式不正确 我得到SAXException Android 有没有办法解析 HTML 我刚刚遇到这个问题 我尝试了一些东西 但决定使用JSoup http jsoup org
  • 如何从文本文件读取数据并将其推回向量?

    我有一个文本文件 test txt 它存储了我的数据 如下所示 每个分隔符字段之间有一个空格 代码 名称 Coy 045 Ted Coy1 054 Red Coy2 我如何从文件中读取这些数据并将其插入向量中 vector
  • GoogleCalendarAPI 接受/拒绝事件

    我正在研究谷歌日历API并使用node js作为构建我的应用程序的平台 我能够使用身份验证过程创建事件 并使用身份验证时生成的访问令牌创建日历事件 我的问题是 假设如果我们有任何参加者参加活动 并且我想使用参加者一方的日历 API 接受 拒
  • android OkHttpClient请求错误

    我正在尝试使用我的 Android 应用程序在 mysql 数据库中存储一些数据 我正在使用 okhttp3 发送请求 但在这一行出现错误 client newCall request execute 我在本地机器和在线上尝试过 但它给了我