我已正确设置Asterisk服务器以允许GUI界面,检查我已尝试过&测试了一个已经可用的Android和Android应用程序用我的浏览器测试相同的。 我可以登录&查看文件。 例如。 http://192.168.8.x:8088/asterisk/rawman?action=getconfig&filename=users.conf
这个命令显示了user.conf文件。
但是,我的Android应用程序无法使用相同的命令。它导致
回应:错误 消息:权限被拒绝
我的代码: 第一个按钮点击: 尝试{ 新的mygoogleSearch()。执行(http://192.168.8.x:8088/asterisk/rawman?action=login&username=tismo&secret=tismo123); } catch(例外e){ Log.v(“Exception google search”,“Exception:”+ e.getMessage()); }
返回: 03-27 17:27:09.468:E / GoogleSearch(21686):响应:SuccessMessage:接受身份验证
点击第二个按钮:
try{
new Execute().execute("http://192.168.8.4:8088/asterisk/rawman?action=getconfig&filename=test.conf");
} catch(Exception e) {
Log.v("Exception google search","Exception:"+e.getMessage());
}
类mygoogleSearch扩展了AsyncTask {
protected String doInBackground(String... searchKey) {
;
String cmd = searchKey[0];
try {
return action(cmd);
} catch(Exception e) {
Log.v("Exception ",
"Exception:"+e.getMessage());
return "";
}
}
私有字符串操作(String uRL) 抛出MalformedURLException,IOException { 字符串newFeed = uRL; StringBuilder response = new StringBuilder();
URL url = new URL(newFeed);
HttpURLConnection httpconn = (HttpURLConnection) url.openConnection();
httpconn.setUseCaches(false);
//httpconn.setRequestProperty("Cache", "false");
if(httpconn.getResponseCode()==HttpURLConnection.HTTP_OK) {
BufferedReader input = new BufferedReader(
new InputStreamReader(httpconn.getInputStream()),
8192);
String strLine = null;
while ((strLine = input.readLine()) != null) {
response.append(strLine);
}
input.close();
}
return response.toString();
}
返回:
03-27 17:28:31.808:E / GoogleSearch(21800):响应:ErrorMessage:权限被拒绝
答案 0 :(得分:0)
您需要CookieManager连接到同一会话。
Quote from the asteriskbook "the definitive Guide"
“LOGIN命令验证Manager接口的HTML视图的凭据。
登录后,Asterisk会在您的浏览器上存储cookie(对于httptimeout设置的长度有效)。此cookie用于连接到同一会话。“
更新:模仿浏览器的CookieManager存储示例:
How to use Cookies with HttpUrlConnection,persist Cookies using HttpUrlConnection