Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 谷歌应用引擎如何创建新联系人?_Google App Engine_Contact - Fatal编程技术网

Google app engine 谷歌应用引擎如何创建新联系人?

Google app engine 谷歌应用引擎如何创建新联系人?,google-app-engine,contact,Google App Engine,Contact,我正在谷歌应用程序引擎上为一个组织开发一个会员注册应用程序,对于新会员,他们可以使用注册页面成为会员,谷歌应用程序引擎中有没有办法将新会员添加为gmail联系人?因此,每当一个新用户点击带有信息的提交按钮时,一个新的gmail联系人就会自动生成并添加到我的联系人列表中[我的gmail地址在GAE应用程序中注册] 下面是我尝试这样做的一些代码,但它不会在每次按下提交按钮时添加新联系人: String Add_New_Contact_Url="https://www.google.com/m8/

我正在谷歌应用程序引擎上为一个组织开发一个会员注册应用程序,对于新会员,他们可以使用注册页面成为会员,谷歌应用程序引擎中有没有办法将新会员添加为gmail联系人?因此,每当一个新用户点击带有信息的提交按钮时,一个新的gmail联系人就会自动生成并添加到我的联系人列表中[我的gmail地址在GAE应用程序中注册]

下面是我尝试这样做的一些代码,但它不会在每次按下提交按钮时添加新联系人:

  String Add_New_Contact_Url="https://www.google.com/m8/feeds/contacts/default/full";

  protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
  {
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");  // UTF-8  GB18030
    PrintWriter out=response.getWriter();
    String Email=request.getParameter("Email");

    if (Email==null || Email.trim().length()<1)
    {
      StrBuf=new StringBuffer("<Html><Head><Title>Signup</Title></Head>\n<Body>\n");
      StrBuf.append("<P><Br><P><Br><P>\n");
      StrBuf.append("<Table Border=1 Align=Center Cellpadding=8 Cellspacing=1><Tr Bgcolor=\"#0088FF\" Colspan=2><Th><Font Color=White>Sign up</Font></Th></Tr></Table>\n<P>\n");
      StrBuf.append("<Center>\n");
      StrBuf.append("<Form Name=Singles_Club_Signup_Form>\n");
      StrBuf.append("<Table Border=1 Cellpadding=6 Cellspacing=1>\n");
...
      StrBuf.append("<Tr><Td Align=Right><B><Font Size=3 Color=#0066FF>Email</Font></B></Td><Td><Input type=text name=Email size=36 /></Td></Tr>\n");
...
      StrBuf.append("</Table>\n");
      StrBuf.append("<P><Br><P>\n");
      StrBuf.append("<Input type=submit value=Sign_Up/>\n");
      StrBuf.append("</Form>\n");
      StrBuf.append("</Center>\n");
      StrBuf.append("</Body>\n</Html>");
    }
    else
    {
      try
      {
        LinkedHashMap<String,String> Key_Value_Pairs=new LinkedHashMap<String,String>();
        String A_Contact=createContact(Email);
        Key_Value_Pairs.put("A",A_Contact);
        getFromUrlDoPost(Add_New_Contact_Url,Key_Value_Pairs);             // Create new contact in Gmail account
      }
      catch (Exception e) { out.println(e.toString()); }
      finally { if (pm!=null) pm.close(); }
    }
  }

  String createContact(String Email)
  {
    return "<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>\n"+
           "<atom:category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact' />\n"+
           "<gd:name>\n"+
           "<gd:givenName>AAA</gd:givenName>\n"+
           "<gd:familyName>BBB</gd:familyName>\n"+
           "<gd:fullName>AAA BBB</gd:fullName>\n"+
           "</gd:name>\n"+
           "<atom:content type='text'>Notes</atom:content>\n"+
           "<gd:email rel='http://schemas.google.com/g/2005#work' primary='true' address='"+Email+"' displayName='E. Bennet' />\n"+
           "<gd:email rel='http://schemas.google.com/g/2005#home' address='liz@example.org' />\n"+
           "<gd:phoneNumber rel='http://schemas.google.com/g/2005#work' primary='true'>\n"+
           "(206)555-1212\n"+
           "</gd:phoneNumber>\n"+
           "<gd:phoneNumber rel='http://schemas.google.com/g/2005#home'>\n"+
           "(206)555-1213\n"+
           "</gd:phoneNumber>\n"+
           "<gd:im address='liz@gmail.com' protocol='http://schemas.google.com/g/2005#GOOGLE_TALK' primary='true' rel='http://schemas.google.com/g/2005#home' />\n"+
           "<gd:structuredPostalAddress rel='http://schemas.google.com/g/2005#work' primary='true'>\n"+
           "<gd:city>Mountain View</gd:city>\n"+
           "<gd:street>1600 Amphitheatre Pkwy</gd:street>\n"+
           "<gd:region>CA</gd:region>\n"+
           "<gd:postcode>94043</gd:postcode>\n"+
           "<gd:country>United States</gd:country>\n"+
           "<gd:formattedAddress>\n"+
           "1600 Amphitheatre Pkwy Mountain View\n"+
           "</gd:formattedAddress>\n"+
           "</gd:structuredPostalAddress>\n"+
           "</atom:entry>";
  }

 StringBuffer getFromUrlDoPost(String A_Url,LinkedHashMap Key_Value_Pairs) throws MalformedURLException,IOException
  {
    StringBuffer Text_Out=new StringBuffer(""),Text_In=new StringBuffer("");
    String data="",key,value,inputLine;

    try                                                    //  Sending a POST Request Using a URL
    {
      // Construct data -- List the entries
      for (Iterator it=Key_Value_Pairs.keySet().iterator();it.hasNext();)
      {
        key=it.next().toString();
        value=Key_Value_Pairs.get(key).toString();
        if (data.length()==0) data=URLEncoder.encode(key,"UTF-8")+"="+URLEncoder.encode(value,"UTF-8");
        else data+="&"+URLEncoder.encode(key,"UTF-8")+"="+URLEncoder.encode(value,"UTF-8");
      }
      // Send data
      URLConnection conn=new URL(A_Url).openConnection();
      conn.setRequestProperty("Content-Type","application/atom+xml");
      conn.setDoOutput(true);

      OutputStreamWriter wr=new OutputStreamWriter(conn.getOutputStream());
      wr.write(data);
      wr.flush();

      Text_In.setLength(0);

      // Get the response
      BufferedReader rd=new BufferedReader(new InputStreamReader(conn.getInputStream()));
      while ((inputLine=rd.readLine()) != null) Text_In.append(inputLine+"\n");
      wr.close();
      rd.close();
    }
    catch (Exception e) { }
    return Text_In;
  }

因为我不知道用什么来代替?

你的用户可以通过OAuth授权你的应用程序通过与他们的gmail联系人列表进行交互。

我找到了原因:不需要包括google collect-*.jar,错误源。

请查看它的说明:要发布此条目,请按如下方式将其发送到联系人列表帖子URL。首先,使用application/Atom+xml内容类型将Atom元素放在新POST请求的主体中。然后将其发送到post URL。但是如何从我的servlet发送post请求呢?
Key_Value_Pairs.put("A",A_Contact);