Californium Framework CoAP и PUT запрос
Я пытаюсь сделать запрос к coap серверу (er-rest-example), используя Californium. Я успешно делаю запрос POST. Но с PUT я получаю плохой запрос, я пытаюсь использовать эти URL в URL:
coap://[aaaa::c30c:0000:0000:0002]:5683/actuators/leds
coap://[aaaa::c30c:0000:0000:0002]:5683/actuators/leds?
coap://[aaaa::c30c:0000:0000:0002]:5683/actuators/leds?color=r
Но ни с кем не добьется успеха. Что я делаю не так?
Это мой простой скрипт:
package coap_client;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
import org.eclipse.californium.core.CoapClient;
import org.eclipse.californium.core.CoapResponse;
import org.eclipse.californium.core.coap.MediaTypeRegistry;
public class cliente {
public static void main(String[] args) throws Exception {
Timer timer;
timer = new Timer();
TimerTask task = new TimerTask(){
@Override
public void run(){
String url="coap://[aaaa::c30c:0000:0000:0002]:5683/actuators/leds";
URI uri= null;
try {
uri = new URI(url);
} catch (URISyntaxException e) {
e.printStackTrace();
}
CoapClient client = new CoapClient(uri);
CoapResponse response = client.put("color=r",MediaTypeRegistry.TEXT_PLAIN);
System.out.println(response.isSuccess());
if (response!=null) {
byte[] myreponse=response.getPayload();
String respuesta2 = new String(myreponse);
System.out.println(respuesta2);
}
}
};
timer.schedule(task, 10,10*1000);
}
}
1 ответ
Решение
В Контики er-rest-example
см POST/PUT
обработчик ( 1) для ресурса LED CoAP. Это ожидает mode
параметр, без которого вы получите BAD_REQUEST в качестве ответа. Я предполагаю, что должен идти в теле запроса.