2013-06-19 67 views
-3

我试图通过使用API​​C# - 无法隐式转换类型“oAuthCredentials”到“字符串”

获得来自LinkedIn的评论,但我得到一个错误,在一些地方

谁能帮助我解决一个错误?

我写这段代码

protected void Page_Load(object sender, EventArgs e) 
    { 
     var request = new RestRequest { Path = "posts?order=recency&category=discussion" }; 

     var credentials = new OAuthCredentials 

     { 
      ConsumerKey = "kmkzt9cqml1s", 
      ConsumerSecret = "hNiwIrZWGSMykoD2", 
     }; 


     var client = new RestClient() 
     { 
      Authority = "http://api.linkedin.com/v1/groups/345455/", 
      Credentials = credentials//Here I'm getting an error 
     }; 

     //Here how to create Request method 
     var MyInfo = client.Request(request); 

     String content = MyInfo.Content; 

     string strURL = "http://api.linkedin.com/"; 
     System.Net.HttpWebRequest objWebRequest = null; 
     System.Net.HttpWebResponse objWebResponse = null; 
     System.IO.StreamReader streamReader = null; 
     string strHTML = null; 

     System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object s, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; }; 

     objWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strURL); 
     objWebRequest.PreAuthenticate = true; 
     objWebRequest.Method = "GET"; 

     objWebRequest.Credentials = System.Net.CredentialCache.DefaultCredentials; 

     objWebResponse = (System.Net.HttpWebResponse)objWebRequest.GetResponse(); 

     streamReader = new System.IO.StreamReader(objWebResponse.GetResponseStream()); 

     strHTML = streamReader.ReadToEnd(); 


     streamReader.Close(); 
     objWebResponse.Close(); 
     objWebRequest.Abort(); 

     Response.ContentType = "text/xml"; 
     Response.Write(strHTML); 
     Response.End(); 

    } 

RestClient.cs

public class RestClient 
    { 
    private string _consumerKey = ""; 
    private string _consumerSecret = ""; 

    #region Properties 
    public string Authority 
    { 
     get 
     { 
      return _consumerKey; 
     } 
     set { _consumerKey = value; } 
    } 

    //Here giving string 
    public string Credentials 
    { 
     get 
     { 
      return _consumerSecret; 
     } 
     set { _consumerSecret = value; } 
    } 
    #endregion 
} 

如何创建request()方法? 有什么建议吗?提前致谢。

+0

无效隐式转换导致主题异常。检查哪一个编译器指向你并解决问题。你提供的代码太常见了。 – Tommi

+0

双击该错误,您将在导致错误的行中着陆。将鼠标悬停在作业的左侧和右侧,查看您使用的是不兼容的数据类型。 – wonko79

回答

0

由于错误说,你想一个OAuthCredentials对象(凭证)分配到字符串键入的属性RestClient对象:Credentials

您必须做Credentials = credentials.toString()或更改RestClient类。

+0

它的工作谢谢,还有一件事如何创建请求()方法 – user2500094

+0

我不知道,因为我不知道它应该做什么:) – C4stor

+0

通过这个http://stackoverflow.com /问题/ 12860359 /检索,LinkedIn的电子邮件地址 – user2500094

0

你的RestClient有一个Credentials属性是一个字符串;你的代码试图把一些不是字符串的东西(在你的情况下,一个OAuthCredentials)放入它。这不是允许的,因为两种类型之间没有隐式转换。

0

RestClientCredentials是字符串,但是您正在影响OAuthCredentialsCredentials = credentials)。

尝试将属性的类型(和后台字段)Credentials更改为OAuthCredentials

0

Credentials不是OAuthCredentials类型,它的string型的,所以你不能用你的credentials变量,它是OAuthCredentials类型进行分配。由于RestClient类引用变量命名为_consumerSecret,而这样等,让我们假设你真的想这样做:

Authority = credentials.ConsumerKey; 
Credentials = credentials.ConsumerSecret; 
相关问题