2015-07-01 27 views
0

我正在从一个移动应用程序管理cPanel账户的应用程序,但首先我将概念证明作为一个简单的Windows窗体应用程序进行验证。用户应该能够使用他们的用户名和密码进行认证。cPanel API - 不允许在webmail内部执行(api2)

但是,没关系我尝试执行什么动作,我总是得到如下回应:每我试图函数发生

<Root> 
    <cpanelresult> 
    <apiversion>2</apiversion> 
    <error>Execution of Email::addpop is not permitted inside of webmail (api2)</error> 
    <func>addpop</func> 
    <data> 
     <reason>Execution of Email::addpop is not permitted inside of webmail (api2)</reason> 
     <result>0</result> 
    </data> 
    <module>Email</module> 
    </cpanelresult> 
</Root> 

此错误。 cPanel帐户在其功能列表中包含所有功能。

我用下面的代码来调用API:

Communication com = new Communication(); 

string result = com.SendRequest("Email", "addpop", 
       "&domain ='apitest.DOMAIN.nl'&email='user'&password='12345luggage'&quota='500'"); 

txtOutput.Text = result; 

通信类

public string SendRequest(string module, string function, string extra = "") 
{ 
    try 
    { 
     var httpWebRequest = 
      (HttpWebRequest) WebRequest.Create(Settings.Default.Server + 
               string.Format(
                "/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module={0}&cpanel_jsonapi_func={1}{2}", 
                module, function, extra)); 
     httpWebRequest.Accept = "*/*"; 
     httpWebRequest.Method = "GET"; 

     string credentials = (username + ":" + password).Base64Encode(); 

     httpWebRequest.Headers.Add("Authorization: Basic " + credentials); 

     var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse(); 



     using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
     { 
      string answer = streamReader.ReadToEnd(); 
      XNode node = JsonConvert.DeserializeXNode(answer, "Root"); 

      return node.ToString(); 
     } 
    } 
    catch (WebException ex) 
    { 
     switch (ex.Status) 
     { 
      case WebExceptionStatus.ProtocolError: 
       return ((HttpWebResponse) ex.Response).StatusCode.ToString(); 
      case WebExceptionStatus.NameResolutionFailure: 
       return "Could not find specified domain: " + 
         ex.Status.ToString(); 
     } 
    } 
    return null; 
} 

任何帮助将是非常赞赏。

回答

0

该问题是由于使用错误的端口引起的。即使我以为我多次检查端口,但实际上连接到webmail端口(2087)而不是cPanel端口(2083)

只需将连接中的端口修改为2083即可解决问题。