Android设备的Asterisk Manager界面

时间:2013-03-27 07:29:07

标签: android http asterisk httpurlconnection

我已正确设置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:权限被拒绝

1 个答案:

答案 0 :(得分:0)

您需要CookieManager连接到同一会话。

Quote from the asteriskbook "the definitive Guide"
“LOGIN命令验证Manager接口的HTML视图的凭据。 登录后,Asterisk会在您的浏览器上存储cookie(对于httptimeout设置的长度有效)。此cookie用于连接到同一会话。“

更新:模仿浏览器的CookieManager存储示例:
How to use Cookies with HttpUrlConnectionpersist Cookies using HttpUrlConnection