private class MyThread1 extends Thread { private String name; //窗口名, 也即是线程的名字 public MyThread1(String name) { this.name = name; } @Override public void run() { String a="switch"; String cmd = "switch"+0 ;//下发命令的内容 String body = String.format(cmd); String url1 = String.format("http://api.heclouds.com/devices/" + DeviceID + "/datapoints?datastream_id="+a); OkHttpClient client = new OkHttpClient(); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=utf-8"), body); Request request = new Request.Builder().url(url1).header("api-key", ApiKey) .post(requestBody) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(@NonNull Call call, @NonNull IOException e) { String insertStr = "POST请求失败"; Looper.prepare(); Toast.makeText(MainActivity2.this, insertStr, Toast.LENGTH_SHORT).show(); Looper.loop(); } @Override public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { String insertStr = "POST请求成功"; Looper.prepare(); Toast.makeText(MainActivity2.this, insertStr, Toast.LENGTH_SHORT).show(); Looper.loop(); } }); } }能不能成功发送数据
时间: 2024-02-10 12:08:49 浏览: 39
这段代码的功能是使用OkHttp库向指定URL发送POST请求,并在请求成功或失败时弹出Toast提示。但是根据代码中的信息,请求的URL是一个数据流ID,而不是一个API接口,所以具体是否能成功发送数据需要根据实际情况来判断。同时,由于请求是异步的,所以无法保证在调用该方法后立即发送数据,需要等待异步请求结束后才能确定是否发送成功。
相关问题
用继承thread方法完成Java程序实现:2个线程同时循环输出“线程名-数字”,其中数字从1变化到10.
以下是使用继承Thread类方法实现的Java示例代码:
```java
class MyThread extends Thread {
private String name;
public MyThread(String name) {
this.name = name;
}
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println(name + "-" + i);
}
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
MyThread thread1 = new MyThread("Thread 1");
MyThread thread2 = new MyThread("Thread 2");
thread1.start();
thread2.start();
thread1.join();
thread2.join();
}
}
```
在上面的代码中,创建了一个名为 `MyThread` 的自定义线程类,该类继承了 Java 内置的 `Thread` 类。在 `run` 方法中,使用循环输出线程名和数字。然后在 `Main` 类中创建两个线程 `thread1` 和 `thread2`,并启动它们。最后使用 `join` 方法等待两个线程结束。
应用Thread类定义两个线程对象,要求每个线程输出它的名字,每隔300毫秒输出一次,共输出20次。
可以使用以下代码实现:
```java
class MyThread extends Thread {
private String name;
public MyThread(String name) {
this.name = name;
}
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println(name);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Test {
public static void main(String[] args) {
MyThread thread1 = new MyThread("Thread1");
MyThread thread2 = new MyThread("Thread2");
thread1.start();
thread2.start();
}
}
```
在上面的代码中,我们创建了一个继承自Thread类的MyThread类,该类有一个name属性表示线程的名字。在MyThread类的run()方法中,我们使用for循环输出线程的名字,并使用Thread.sleep()方法让线程休眠300毫秒。
在主函数中,我们创建了两个MyThread对象,分别表示两个线程,然后调用它们的start()方法启动线程。由于两个线程是并行执行的,因此它们的输出会交替出现。