多次上传 Google 联系人 Api XML?

Multiple upload Google Contacts Api XML?

我正在 PHP 开发一个应用程序,第一次需要上传 100 个联系人,我开发了一个基本的应用程序来上传一个联系人,但它需要接近 1,5 秒 处理请求:

        $before = microtime(true);
        $req = new Google_Http_Request("https://google.com/m8/feeds/contacts/" . $user_email . "/full/");
        $req->setRequestMethod("POST");
        $req->setPostBody($contact_xml);
        $req->setRequestHeaders(array('content-length' => strlen($contact_xml), 'GData-Version' => '3.0', 'content-type' => 'application/atom+xml; charset=UTF-8; type=feed'));

        $submit = $this->_gclient->getAuth()->authenticatedRequest($req);
        $sub_response = $submit->getResponseBody();
        $parsed = simplexml_load_string($sub_response);
        $client_id = explode("base/", $parsed->id);

        //Profiling
        $after = microtime(true);

我已经尝试连接到我的条目两次或我需要的次数,但它不起作用:

$contact_xml.="
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'
    xmlns:gd='http://schemas.google.com/g/2005'
    xmlns:gContact='http://schemas.google.com/contact/2008'>
  <atom:category scheme='http://schemas.google.com/g/2005#kind'
    term='http://schemas.google.com/contact/2008#contact'/>
  ...
  <gContact:groupMembershipInfo deleted='false'
        href='http://www.google.com/m8/feeds/groups/".$user_email."/base/6'/>
</atom:entry>

我从 google 那里得到的唯一信息是:

 [1] => SimpleXMLElement Object
    (
        [error] => SimpleXMLElement Object
            (
                [domain] => GData
                [code] => parseError
                [internalReason] => Parse Error
            )

    )

这就像...

  1. 我是不是做错了什么,Google 是否给任何类型的异步请求
  2. 甚至可以多次上传 google 联系人条目吗?
  3. 如果我使用单独的上传功能进行循环,那么对于 100 个联系人的数量来说需要太长时间,这就是问题的原因。

比不过你!

最后感谢 DalmTo,GData 的 批处理功能非常适合这个问题。 以下是您需要创建以使用批处理功能的提要示例:

<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:gContact='http://schemas.google.com/contact/2008'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:batch='http://schemas.google.com/gdata/batch'>
<entry>
    <batch:id>create</batch:id>
    <batch:operation type='insert'/>
    <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2008#contact'/>
    <gd:name>
    <gd:fullName>Example example</gd:fullName>
    <gd:givenName>Example</gd:givenName>
    <gd:familyName>Example</gd:familyName>
    </gd:name>
    <gd:email rel='http://schemas.google.com/g/2005#home' address='liz@gmail.com' primary='true'/>
</entry></feed>

然后你只需要复制你的条目,用你需要循环的操作。 只是一个建议,为了在您的联系人收件箱中创建联系人,您需要添加:

<gContact:groupMembershipInfo deleted = 'false' href = 'http://www.google.com/m8/feeds/groups/" . $user_email . "/base/6' />

对 Google 的请求如下:

$req = new Google_Http_Request("https://www.google.com/m8/feeds/contacts/" . $user_email . "/full/batch/");

我希望这对某人有所帮助。