2016-12-25 31 views
0

其實我是通過twitterizer自動發送推文,並從不同的url上獲取api JSON數據的數據。但是,當我把文本框中的url並啓動項目它工作正常,我從文本框中獲取數據,但當過程進入「授權的應用程序」在Twitter和我按「授權」按鈕,然後頁面加載再次,但在那個時候Request [「textbox」]爲空。下面是正面編輯代碼。我從一個網頁,如 「Frontsheet.aspx」 發佈的數據TwitterStrap.aspx如何在Webforms中提交按鈕後一次維護文本框的值

<form id="form1" runat="server" action="TwitterStrap.aspx" > 
    <div style="position:absolute"> 
    <input type="text" id="text1" name="txtFirstName" placeholder="Enter Your First Name" /> 
     <br /> 
     <input id="Submit1" type="submit" value="submit" /> 
    </div> 
    </form> 

這是TwitterStrap.aspx.cs代碼

protected void Page_Load(object sender, EventArgs e) 
     { 
      var text=""; 
      if (!IsPostBack) 
      { 
       text = Request.Form["txtFirstName"]; 
      } 

      using (var webClient = new System.Net.WebClient()) 
      { 




       var jsonString = webClient.DownloadString(text); 
       ProductsJsonModel Data = JsonConvert.DeserializeObject<ProductsJsonModel>(jsonString); 
       List<Product> ProductsFromUrl = Data.products; // All of your products are here. 

       // Your code 
       Session["value"] = ProductsFromUrl; 
       var title=""; 
       var cnt = ProductsFromUrl.Count; 

       for (int i = 0; i < cnt; i++) 
       { 
        title = ProductsFromUrl[0].title; 

       } 


       var oauth_consumer_key = "myLtWOTLGtLsjNsm15tUUpdEX"; 
       var oauth_consumer_secret = "uC9yHjPPV83Olvq0I8zt9eMwyucIpUcO70NduqNx0JuPQVyDZB"; 

       if (Request["oauth_token"] == null) 
       { 
        OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
         oauth_consumer_key, 
         oauth_consumer_secret, 
         Request.Url.AbsoluteUri); 

        Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}", 
         reqToken.Token)); 

       } 
       else 
       { 
        string requestToken = Request["oauth_token"].ToString(); 
        string pin = Request["oauth_verifier"].ToString(); 

        var tokens = OAuthUtility.GetAccessToken(
         oauth_consumer_key, 
         oauth_consumer_secret, 
         requestToken, 
         pin); 

        OAuthTokens accesstoken = new OAuthTokens() 
        { 
         AccessToken = tokens.Token, 
         AccessTokenSecret = tokens.TokenSecret, 
         ConsumerKey = oauth_consumer_key, 
         ConsumerSecret = oauth_consumer_secret 
        }; 

        //TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
        // accesstoken, 
        // "Testing!! It works (hopefully)."); 

        Twitterizer.TwitterResponse<TwitterStatus> response = TwitterStatus.Update(accesstoken, title, new StatusUpdateOptions() { UseSSL = true, APIBaseAddress = "http://api.twitter.com/1.1/" }); 

        if (response.Result == RequestResult.Success) 
        { 
         Response.Redirect("https://twitter.com/"); 
        } 
        else 
        { 
         Response.Redirect("https://twitter.com/"); 
        } 
       } 

      } 




      } 
+0

如果會,如果沒有提交只火形式(的IsPostBack!)。如果表單沒有提交,您將不會有第一個SD名稱的request.form。 – Joel

+0

喬爾謝謝,那我該怎麼辦? –

+0

查看CodingYoshi提交的答案 – Joel

回答

0

試試這個。我不完全確定你在嘗試什麼,但是下載的產品是在會話中。因此,您可以一次提供身份驗證令牌以及會話得到它:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var text = ""; 
    if (IsPostBack) 
    { 
     text = Request.Form["txtFirstName"]; 
    } 

    string jsonString; 

    using (var webClient = new System.Net.WebClient()) 
    { 
     jsonString = webClient.DownloadString(text); 
    } 

    if (string.IsNullOrWhiteSpace(jsonString)) 
    { 
     // Nothing to do so we return 
     return; 
    } 


    ProductsJsonModel Data = JsonConvert.DeserializeObject<ProductsJsonModel>(jsonString); 
    List<Product> ProductsFromUrl = Data.products; // All of your products are here. 

    // Your code 
    // All the products are in the value session variable so we can get it later 
    Session["value"] = ProductsFromUrl; 

    var oauth_consumer_key = "myLtWOTLGtLsjNsm15tUUpdEX"; 
    var oauth_consumer_secret = "uC9yHjPPV83Olvq0I8zt9eMwyucIpUcO70NduqNx0JuPQVyDZB"; 

    if (Request["oauth_token"] == null) 
    { 
     OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      Request.Url.AbsoluteUri); 

     Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}", 
      reqToken.Token)); 

    } 
    else 
    { 
     string requestToken = Request["oauth_token"].ToString(); 
     string pin = Request["oauth_verifier"].ToString(); 

     var tokens = OAuthUtility.GetAccessToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      requestToken, 
      pin); 

     OAuthTokens accesstoken = new OAuthTokens() 
     { 
      AccessToken = tokens.Token, 
      AccessTokenSecret = tokens.TokenSecret, 
      ConsumerKey = oauth_consumer_key, 
      ConsumerSecret = oauth_consumer_secret 
     }; 

     //TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
     // accesstoken, 
     // "Testing!! It works (hopefully)."); 

     var prods = Session["value"]; 
     if (prods != null) 
     { 
      ProductsFromUrl = Session["value"] as List<Product>; 

      var title = ""; 
      var cnt = ProductsFromUrl.Count; 

      for (int i = 0; i < cnt; i++) 
      { 
       title = ProductsFromUrl[0].title; 

      } 
      Twitterizer.TwitterResponse<TwitterStatus> response = 
       TwitterStatus.Update(accesstoken, title, new StatusUpdateOptions() 
       { UseSSL = true, APIBaseAddress = "http://api.twitter.com/1.1/" }); 

      if (response.Result == RequestResult.Success) 
      { 
       Response.Redirect("https://twitter.com/"); 
      } 
      else 
      { 
       Response.Redirect("https://twitter.com/"); 
      } 

      // clear the session 
      Session.Remove("value"); 
     } 

    } 
} 
+0

謝謝Yoshi ..但是在運行過程中點擊「授權按鈕」時,我仍然收到空值。 –

+0

您是否改變了我所指出的發佈條件? – CodingYoshi

+0

是的,我改變它,因爲你在你的回答中描述,但在「授權應用程序」var tweet顯示空值後。 –

-1

CodingYoshi請檢查

using (var webClient = new System.Net.WebClient()) 
       { 
        var text = ""; 

        text = Request.Form["txtFirstName"]; 
        Session["Tweet"] = Request.Form["txtFirstName"]; 
        var tweet = Session["Tweet"]; 

        if (tweet != null) 
        { 
         // do whatever you need 
         text = tweet.ToString(); 
         // clear the session 
         Session.Remove("Tweet"); 
        } 
        if (!IsPostBack) 
        { 
         text = Request.Form["txtFirstName"]; 
        } 


        var jsonString = webClient.DownloadString(text); 
+1

雖然此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – DimaSan

相關問題