Java 具有非密钥对的Android post请求

Java 具有非密钥对的Android post请求,java,android,http,curl,post,Java,Android,Http,Curl,Post,下面是我目前的工作代码,用我的家庭自动化系统打开一盏灯。我正在升级到一个新系统,它需要一个修改后的post命令。目前我认为这会发送密钥对“lightswitch1=ON”。我需要它只发送“上”,但我不知道如何做到这一点。下面是有效的CURL命令 public void turnonlight() { String url = "http://example.com:8090/CMD"; StringRequest MyStringRequest = new StringR

下面是我目前的工作代码,用我的家庭自动化系统打开一盏灯。我正在升级到一个新系统,它需要一个修改后的post命令。目前我认为这会发送密钥对“lightswitch1=ON”。我需要它只发送“上”,但我不知道如何做到这一点。下面是有效的CURL命令

public void turnonlight() {


    String url = "http://example.com:8090/CMD";


    StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    //Toast.makeText(MjpegActivity.this,response,Toast.LENGTH_LONG).show();
                    //This code is executed if the server responds, whether or not the response contains data.
                    //The String 'response' contains the server's response.
                }
        },
            new Response.ErrorListener() { //Create an error listener to handle errors appropriately.
                @Override
                public void onErrorResponse(VolleyError error) {
                    //Toast.makeText(MjpegActivity.this,error.toString(),Toast.LENGTH_LONG).show();
                    //This code is executed if there is an error.
                }
        }){
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> MyData = new HashMap<String, String>();
            MyData.put(lightswitch1 "ON"); //Add the data you'd like to send to the server.
            return MyData;
        }
    };
    RequestQueue MyRequestQueue = Volley.newRequestQueue(this);
    MyRequestQueue.add(MyStringRequest);
}
public void turnonlight(){
字符串url=”http://example.com:8090/CMD";
StringRequest MyStringRequest=新建StringRequest(Request.Method.POST,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
//Toast.makeText(MjpegActivity.this,response,Toast.LENGTH_LONG.show();
//如果服务器响应,则执行此代码,无论响应是否包含数据。
//字符串“response”包含服务器的响应。
}
},
new Response.ErrorListener(){//创建一个错误监听器以适当地处理错误。
@凌驾
公共无效onErrorResponse(截击错误){
//Toast.makeText(MjpegActivity.this,error.toString(),Toast.LENGTH_LONG.show();
//如果出现错误,将执行此代码。
}
}){
@凌驾
受保护的映射getParams(){
Map MyData=newhashmap();
MyData.put(lightswitch1“ON”);//添加要发送到服务器的数据。
返回MyData;
}
};
RequestQueue MyRequestQueue=Volley.newRequestQueue(this);
添加(MyStringRequest);
}

curl-X POST--header“Content-Type:text/plain”--header“Accept:application/json”-d“ON”“”

以下内容应与
Volley一起使用:

String url = "http://example.com:8090/CMD";

StringRequest myStringRequest = new StringRequest(Request.Method.POST, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        }) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("Accept", "application/json");
        return headers;
    }

    @Override
    public String getBodyContentType() {
        return "text/plain";
    }

    @Override
    public byte[] getBody() throws AuthFailureError {
        String httpPostBody = "ON";
        return httpPostBody.getBytes();
    }
};
RequestQueue MyRequestQueue = Volley.newRequestQueue(this);
myStringRequest.setShouldCache(false);
MyRequestQueue.add(myStringRequest);
stringurl=”http://example.com:8090/CMD";
StringRequest myStringRequest=新建StringRequest(Request.Method.POST,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
}) {
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=newhashmap();
headers.put(“接受”、“应用程序/json”);
返回标题;
}
@凌驾
公共字符串getBodyContentType(){
返回“文本/纯文本”;
}
@凌驾
公共字节[]getBody()抛出AuthFailureError{
字符串httpPostBody=“ON”;
返回httpPostBody.getBytes();
}
};
RequestQueue MyRequestQueue=Volley.newRequestQueue(this);
myStringRequest.setShouldCache(false);
添加(myStringRequest);

正文被
getBody()
覆盖,指定的标题使用
getHeaders()

以下内容应使用
Volley

String url = "http://example.com:8090/CMD";

StringRequest myStringRequest = new StringRequest(Request.Method.POST, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        }) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("Accept", "application/json");
        return headers;
    }

    @Override
    public String getBodyContentType() {
        return "text/plain";
    }

    @Override
    public byte[] getBody() throws AuthFailureError {
        String httpPostBody = "ON";
        return httpPostBody.getBytes();
    }
};
RequestQueue MyRequestQueue = Volley.newRequestQueue(this);
myStringRequest.setShouldCache(false);
MyRequestQueue.add(myStringRequest);
stringurl=”http://example.com:8090/CMD";
StringRequest myStringRequest=新建StringRequest(Request.Method.POST,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
}) {
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=newhashmap();
headers.put(“接受”、“应用程序/json”);
返回标题;
}
@凌驾
公共字符串getBodyContentType(){
返回“文本/纯文本”;
}
@凌驾
公共字节[]getBody()抛出AuthFailureError{
字符串httpPostBody=“ON”;
返回httpPostBody.getBytes();
}
};
RequestQueue MyRequestQueue=Volley.newRequestQueue(this);
myStringRequest.setShouldCache(false);
添加(myStringRequest);

正文被
getBody()
覆盖,并且指定的标题带有
getHeaders()

我在尝试将其与代码一起发送时遇到“BasicNetwork.performRequest:意外响应代码400”错误。我使用wire shark并嗅出一个工作请求和一个非工作请求。右边的有效,左边的无效。我可以更改什么使左侧的与右侧的相同?我认为这是因为内容类型错误。我在尝试将其与代码一起发送时遇到“BasicNetwork.performRequest:意外响应代码400”错误。我使用wire shark并嗅出一个工作请求和一个非工作请求。右边的有效,左边的无效。我可以改变什么使左边的像右边的一样?我想这是因为内容类型错误。