我试图将云台缩放命令发送到设备(DVR)提供的网络监控服务器。我能够访问Web服务器中的所有内容,并且我在Firefox中使用firebug来定位按钮发送到服务器的特定JavaScript命令。我想从我的安卓应用程序发送特定的代码行。 我应该使用 JSON 还是 SOAP?我不熟悉这两个,但我认为这是这样做的方法,我只是不知道具体如何处理这些概念。
这是我使用 Firebug 从 Web 监控中获得的示例 JavaScript:
这是锚标记的内容:
<a class="y4" onmouseout="ajaxFunction('stop','directionleft')"
onmouseup="ajaxFunction('stop','directionleft')"
onmousedown="ajaxFunction('start','directionleft')" href="javascript:;"></a>
这是"ajaxFunction"的脚本:
function ajaxFunction(req, param)
{
var xmlHttp;
try
{
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("ÄúµÄä¯ÀÀÆ÷²»Ö§³ÖAJAX£¡");
return false;
}
}
}
if(g_viewStatu[g_clicked].vbPlaying)
{
if(req=="start")
{
xmlHttp.open("POST","dvrcmd",true);
xmlHttp.send("command=ptz_req&req="+req+"¶m="+param+"&channel="+g_viewStatu[g_clicked].nchannel+"&stream="+g_channelStatu[g_viewStatu[g_clicked].nchannel].streamStyle);
ptzstate = 1;
}
else if(req=="stop" && ptzstate == 1)
{
xmlHttp.open("POST","dvrcmd",true);
xmlHttp.send("command=ptz_req&req="+req+"¶m="+param+"&channel="+g_viewStatu[g_clicked].nchannel+"&stream="+g_channelStatu[g_viewStatu[g_clicked].nchannel].streamStyle);
ptzstate = 0;
}
}
}
回答了我自己的问题..>.<</p>
public void executePTZ(String cmd, String direction){
String posturl = "http://192.168.1.120";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(posturl);
try {
httppost.setEntity(new StringEntity("command=ptz_req&req="+cmd+"¶m="+direction+"&channel=1&stream=1"));
HttpResponse resp = httpclient.execute(httppost);
HttpEntity ent = resp.getEntity();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}