【发布时间】:2019-02-02 18:44:50
【问题描述】:
我在 FIWARE-lab 上的 Ubuntu 16.04 实例中设置了 fiware201:iot-sensor,目前正在构建一个 android 应用程序,以便能够发送命令来访问上下文提供程序提供的虚拟设备,我设置了一个类格式化数据并将其发送到教程提供的端点,但我似乎无法让它工作,每当我尝试发送任何命令时都会收到 422 错误。
其他细节:
我正在使用 volley -> 一个包发送帖子,在 android 中获取请求
fiware-lab 区域:克里特岛
代码如下:
import android.content.Context;
import android.util.Log;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class ApiController {
private String urlString
public String serverResponse;
private RequestQueue queue ;
public ApiController(Context context) {
//set context variables if required
serverResponse = "";
queue = Volley.newRequestQueue(context);
}
public void setDevice(String device) {
this.device = device;
urlString = "http://myFloatingIp:3001/iot/" +"Lamp001"; // URL to call
}
public void send() {
String uri = String.format(Locale.US, urlString);
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.POST,uri,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
serverResponse = response;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
serverResponse = "Error";
}
}
) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params=new HashMap<String,String>();
params.put("data","urn:ngsi-ld:Lamp:001"@On");
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> headers=new HashMap<String,String>();
headers.put("Content-Type","text/plain");
return headers;
}
};
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
}
【问题讨论】:
标签: iot fiware fiware-orion