Zimbra offers Open Source email server software and shared calendar for Linux and the Mac
Go Back   Zimbra :: Forums > Zimbra Collaboration Suite > Developers

Welcome to the Zimbra :: Forums!
Welcome, if you would like to post a comment please register. We also encourage you to explore all things Zimbra with our team and members of the community.

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 12-31-2007, 10:02 AM
Intermediate Member
 
Posts: 18
Question SOAP problem - couldn't connect to host

Hello,

There are many posts with SOAP difficulties.
Mine is familiar: (7) couldn't connect to host

The code I am using is from the forums for using PHP Curl.
This works for some people but not for me.

Where do I begin to troubleshoot this?
What are the reasons that it cannot connect?
The URL is correct because it tries to connect which means it finds the server.

This is very frustrating because there is little action to take when the error is so vague and there is no where to find out more except on these forums.

Any advice is appreciated.
Reply With Quote
  #2 (permalink)  
Old 12-31-2007, 11:18 AM
Zimbra Consultant & Moderator
 
Posts: 20,314
Default

Perhaps if you gave some examples of what you're trying to achieve, the code you're using and the exact errors you are seeing somebody might be able to offer you advice. I'll also move this to the developers forum where I believe it should be. I seem to remember that there is some documentation in the source code about soap calls although as I'm not a coder I could be wrong about that.
__________________
Regards


Bill
Reply With Quote
  #3 (permalink)  
Old 12-31-2007, 02:20 PM
Intermediate Member
 
Posts: 18
Unhappy SOAP code : cannot connect to server

When I run this code the browser says it is loading the page for about 3 minutes then times out with the message
"ERROR: curl_exec - (7) couldn't connect to host ZimbraAdminCreateAccount Failed!"

There was little information in the documentation with the source code about how to connect to the server.
The documentation is useful for when you can connect to the Zimbra server.

This is the code I am using that supposedly works. It is from another forum thread.

What I need to know is how to troubleshoot the problem when the only error message is so vague.
Is the problem with the code I am using?
Is it a server issue?
Is it a Zimbra issue?
Where do I start?

<?PHP
$ServerAddress = "zimbra.mydomain.com";
$AdminUserName = "";
$AdminPassword = "";

$NewUserName = "mynewaccount@mydomain.com";
$NewUserPassword = "mynewpassoword";
$COSId = "f070eede-c0c5-4867-a158-1f35f1c39e15";

// To get your COSId for COS defualt or any other COS (I left mine in there as an example):
// zmprov getCos default | grep "zimbraId:" from the command line

if(($ZimbraSOAPResponse = ZimbraAdminCreateAccount(1, $ServerAddress, $AdminUserName, $AdminPassword, $NewUserName, $NewUserPassword, $COSId)) == FALSE)
{
printf("ZimbraAdminCreateAccount Failed!<BR>\n");
return(FALSE);
}

print("Zimbra create account response:<BR>" . htmlentities($ZimbraSOAPResponse) . "<BR><BR>\n");
?>

<?PHP

// -------------------------------------------------------------------

function ZimbraAdminCreateAccount($Trace, $ServerAddress, $AdminUserName, $AdminPassword, $NewUserName, $NewUserPassword, $COSId)
{
$CurlHandle = curl_init();
curl_setopt($CurlHandle, CURLOPT_URL, "https://" . $ServerAddress . ":7071/service/admin/soap/");
curl_setopt($CurlHandle, CURLOPT_POST, TRUE);
curl_setopt($CurlHandle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYHOST, FALSE);

// ------ Send the zimbraAdmin AuthRequest -----

$SOAPMessage = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<context xmlns="urn:zimbra"/>
</soap:Header>
<soap:Body>
<AuthRequest xmlns="urn:zimbraAdmin">
<name>' . $AdminUserName . '</name>
<password>' . $AdminPassword . '</password>
</AuthRequest>
</soap:Body>
</soap:Envelope>';

curl_setopt($CurlHandle, CURLOPT_POSTFIELDS, $SOAPMessage);

if(!($ZimbraSOAPResponse = curl_exec($CurlHandle)))
{
print("ERROR: curl_exec - (" . curl_errno($CurlHandle) . ") " . curl_error($CurlHandle));
return(FALSE);
}

print("Raw Zimbra SOAP Response:<BR>" . htmlentities($ZimbraSOAPResponse) . "<BR><BR>\n");

// Parse for the sessionId
// <sessionId type="admin" id="123">123</sessionId>
$sessionId = strstr($ZimbraSOAPResponse, "<sessionId");
$sessionId = strstr($sessionId, ">");
$sessionId = substr($sessionId, 1, strpos($sessionId, "<") - 1);
print("sessionId = $sessionId<BR>\n");

// Parse for the authToken
// <authToken>123</authToken>
$authToken = strstr($ZimbraSOAPResponse, "<authToken");
$authToken = strstr($authToken, ">");
$authToken = substr($authToken, 1, strpos($authToken, "<") - 1);
print("authToken = $authToken<BR>\n");

// ------ Send the zimbraCreateAccount request -----
$SOAPMessage = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<context xmlns="urn:zimbra">
<authToken>' . $authToken . '</authToken>
<sessionId id="' . $sessionId . '">' . $sessionId . '</sessionId>
</context>
</soap:Header>
<soap:Body>
<CreateAccountRequest xmlns="urn:zimbraAdmin">
<name>' . $NewUserName . '</name>
<password>' . $NewUserPassword . '</password>
<a n="zimbraCOSId">' . $COSId . '</a>
</CreateAccountRequest>
</soap:Body>
</soap:Envelope>';

curl_setopt($CurlHandle, CURLOPT_POSTFIELDS, $SOAPMessage);

if(!($ZimbraSOAPResponse = curl_exec($CurlHandle)))
{
print("ERROR: curl_exec - (" . curl_errno($CurlHandle) . ") " . curl_error($CurlHandle));
return(FALSE);
}

// print("Raw Zimbra SOAP Response:<BR>" . htmlentities($ZimbraSOAPResponse) . "<BR><BR>\n");

return($ZimbraSOAPResponse);
}
?>
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes


Similar Threads

Why Join?

Registering let's you ask questions, makes it easier to search, displays any files attached to posts, and notifies you about replies.

blog.zimbra.com




 

SEO by vBSEO ©2011, Crawlability, Inc.