我也尝试发送一个 http 帖子。
我从上面获取代码
并根据我的情况进行更改。
但不幸的是,出了点问题。
我想将日期发送到我的 Yamaha AV 接收器 RX-A1080。
有一个 Web 界面,我用它记录了 HTTP POST 命令
在火狐浏览器中。
Firefox 浏览器还以紧凑的 CURL 命令语法提供数据,因此
您可以在以下几行中更好地看到 HTTP POST 命令的数据:
(as a CURL Command)
curl
'http://192.168.0.24/YamahaRemoteControl/ctrl'
-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0'
-H 'Accept: */*'
-H 'Accept-Language: de,en-US;q=0.7,en;q=0.3'
--compressed
-H 'Referer: http://192.168.0.24/Setup/'
-H 'Content-Type: text/xml'
-H 'Connection: keep-alive'
--data '<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="PUT"><System><Speaker_Preout><Pattern_1><PEQ><Manual_Data><Front_L><Band_7><Q>0.500</Q></Band_7></Front_L></Manual_Data></PEQ></Pattern_1></Speaker_Preout></System></YAMAHA_AV>'
我将其转换为:https://curl.trillworks.com/#json
得到这个:
{
"url":"http://192.168.0.24/YamahaRemoteControl/ctrl",
"raw_url":"http://192.168.0.24/YamahaRemoteControl/ctrl",
"method":"post",
"headers":
{
"User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0)
Gecko/20100101 Firefox/62.0",
"Accept":"*/*",
"Accept-Language":"de,en-US;q=0.7,en;q=0.3",
"Referer":"http://192.168.0.24/Setup/",
"Content-Type":"text/xml",
"Connection":"keep-alive"
},
"data":
{
"<?xml version":"\"1.0\" encoding=\"utf-8\"?><YAMAHA_AV cmd=\"PUT\">
<System><Speaker_Preout><Pattern_1><PEQ><Manual_Data><Front_L><Band_7><Q>0.500</Q></Band_7></Front_L></Manual_Data></PEQ></Pattern_1></Speaker_Preout></System></YAMAHA_AV>"
}
}
我写的代码是:
(我不确定 JSONObject 数据中是否有很多斜线???)
// Gesamt JSON Object
JSONObject post_dict = new JSONObject();
try {
post_dict.put("url", "http://192.168.0.24/YamahaRemoteControl/ctrl");
post_dict.put("raw_url", "http://192.168.0.24/YamahaRemoteControl/ctrl");
post_dict.put("method", "post");
// headers - JSON Object ////////////////////////////////////////////
JSONObject headers = new JSONObject();
headers.put("User-Agent","Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0");
headers.put("Accept","*/*");
headers.put("Accept-Language","de,en-US;q=0.7,en;q=0.3");
headers.put("Referer","http://192.168.0.24/Setup/");
headers.put("Content-Type","text/xml");
headers.put("Connection","keep-alive");
post_dict.put("headers", headers);
// data - JSON Object ////////////////////////////////////////////
JSONObject data = new JSONObject();
data.put("<?xml version","\\\"1.0\\\" encoding=\\\"utf-8\\\"?><YAMAHA_AV cmd=\\\"PUT\\\"><System><Speaker_Preout><Pattern_1><PEQ><Manual_Data><Front_L><Band_7><Gain><Val>-200</Val><Exp>1</Exp><Unit>dB</Unit></Gain></Band_7></Front_L></Manual_Data></PEQ></Pattern_1></Speaker_Preout></System></YAMAHA_AV>");
post_dict.put("data", data);
} catch (JSONException e) {
e.printStackTrace();
}
new YourAsyncTask().execute(String.valueOf(post_dict));
谁能告诉我怎么了:-(
有关 Firefox 执行的记录命令的更多信息
您可以看到以下几行。 (但它们类似于 CURL 命令)
New Request
============
POST http://192.168.0.24/YamahaRemoteControl/ctrl
Request-Header:
===============
Host: 192.168.0.24
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.24/Setup/
Content-Type: text/xml
Content-Length: 272
Connection: keep-alive
Request-Body:
=============
<?xml version="1.0" encoding="utf-8"?>
<YAMAHA_AV cmd="PUT">
<System>
<Speaker_Preout>
<Pattern_1>
<PEQ>
<Manual_Data>
<Front_L>
<Band_7>
<Gain>
<Val>-10</Val>
<Exp>1</Exp>
<Unit>dB</Unit>
</Gain>
or
<Freq>1.26 kHz</Freq>
or
<Q>0.500</Q>
</Band_7>
</Front_L>
</Manual_Data>
</PEQ>
</Pattern_1>
</Speaker_Preout>
</System>
</YAMAHA_AV>