Click here to Skip to main content
15,885,141 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
I am trying to import contacts from Hotmail. For that i am using following code

C#
private const string wlCookie = "wl_auth";
private const string clientId = "...clientId...";
private const string callback = "http://localhost:8465/";
private const string clientSecret = "...secret key...";
private const string oauthUrl = "https://oauth.live.com/token";
public ActionResult Index(string code)
{
    if (code != null)
    {
        GetMsnContacts(Request.QueryString["code"].ToString());
    } 
   return View();
}
private void GetMsnContacts(string code)
{
    MsnImport msnImport = new MsnImport();
    List<string> emaillist = new List<string>();
    emaillist = msnImport.GetMsnContacts(code);
} 


msnImport.cs

public List<string> GetMsnContacts(string code)
    {

        try
        {
            HttpContext context = HttpContext.Current;
            string verifier = code;
            OAuthToken token;
            OAuthError error;

            if (!string.IsNullOrEmpty(verifier))
            {
                RequestAccessTokenByVerifier(verifier, out token, out error);
            }
        }
        catch (Exception ex) { }
        return emaillist;
    }
    private void RequestAccessTokenByVerifier(string verifier, out OAuthToken token, out OAuthError error)
    {
        string content = String.Format("client_id={0}&redirect_uri={1}&client_secret={2}&code={3}&grant_type=authorization_code",
        HttpUtility.UrlEncode(clientId),
        HttpUtility.UrlEncode(Callback),
        HttpUtility.UrlEncode(clientSecret),
        HttpUtility.UrlEncode(verifier));
        RequestAccessToken(content, out token, out error);
    }
    private void RequestAccessToken(string postContent, out OAuthToken token, out OAuthError error)
    {
        token = null;
        error = null;
        HttpWebRequest request = WebRequest.Create(oauthUrl) as HttpWebRequest;
        request.Method = "POST";
        try
        {
            using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
            {
                writer.Write(postContent);
            }
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            if (response != null)
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(OAuthToken));
                var objResponse = response.GetResponseStream();
                token = serializer.ReadObject(response.GetResponseStream()) as OAuthToken;
                if (token != null)
                {
                    RequestContacts(token.AccessToken);
                }
            }
        }
        catch (Exception ex)
        {

        }

    }


token = serializer.ReadObject(response.GetResponseStream()) as OAuthToken; this gives an error


C#
e
{System.Runtime.Serialization.SerializationException: There was an error deserializing the object of type ContactsImport.Helper.OAuthToken. Encountered unexpected character '<'. ---> System.Xml.XmlException: Encountered unexpected character '<'.
   at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, XmlException exception)
   at System.Runtime.Serialization.Json.XmlJsonReader.ReadAttributes()
   at System.Runtime.Serialization.Json.XmlJsonReader.ReadNonExistentElementName(StringHandleConstStringType elementName)
   at System.Runtime.Serialization.Json.XmlJsonReader.Read()
   at System.Xml.XmlBaseReader.IsStartElement()
   at System.Xml.XmlBaseReader.IsStartElement(XmlDictionaryString localName, XmlDictionaryString namespaceUri)
   at System.Runtime.Serialization.XmlReaderDelegator.IsStartElement(XmlDictionaryString localname, XmlDictionaryString ns)
   at System.Runtime.Serialization.XmlObjectSerializer.IsRootElement(XmlReaderDelegator reader, DataContract contract, XmlDictionaryString name, XmlDictionaryString ns)
   at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalIsStartObject(XmlReaderDelegator reader)
   at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName)
   at System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   --- End of inner exception stack trace ---
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(XmlDictionaryReader reader)
   at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(Stream stream)
   at ContactsImport.Helper.MsnImport.RequestAccessToken(String postContent, OAuthToken& token, OAuthError& error)

how we can solve this error?
Posted
v2
Comments
himanshu agarwal 20-Aug-14 7:11am    
you may try to dump the response stream just to check if the data returned is correct?

1 solution

Hi himanshu, thanks for your response how can i do that can u please explain
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900