相关文章推荐
侠义非凡的红金鱼  ·  【Nginx】启动成功无法访问网页(完整的排 ...·  1 年前    · 
会搭讪的骆驼  ·  用Dataproc无服务器从BigQuery ...·  1 年前    · 
跑龙套的大脸猫  ·  如何在Python中获取Windows屏幕截 ...·  2 年前    · 
千年单身的红薯  ·  shell脚本获取远程服务器执行结果 - ...·  2 年前    · 
痛苦的苹果  ·  Emoji表情转UTF-8编解码、过滤 - 简书·  2 年前    · 
Code  ›  ASP.NET MVC -使用cURL或类似的方法在应用程序中执行请求开发者社区
string curl response twitter
https://cloud.tencent.com/developer/ask/sof/108896230
兴奋的石榴
2 年前
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
提问
问 ASP.NET MVC -使用cURL或类似的方法在应用程序中执行请求
Stack Overflow用户
提问于 2009-10-22 08:39:53
EN

我正在用ASP.NET MVC构建一个应用程序(使用C#),我想知道如何在控制器内执行curl list.xml 之类的调用--基本上我想构建一种REST来执行诸如显示、编辑和删除之类的操作,比如Twitter。

但不幸的是,直到现在,我还没有在这个网站上找到除了windows的cURL之外的任何东西: http://curl.haxx.se/

因此,我不知道是否有任何传统的方法从URL检索这类调用,例如post、delete和put等.

我只想知道一种简单的方法,可以在我的ASP.NET MVC应用程序上在我的控制器内执行像curl这样的命令。

更新:

嗨,所以我成功地发出了GET请求,但是现在我在检索POST请求时遇到了严重的问题--例如,我正在使用来自Twitter的update状态API,这个API在curl中是这样工作的:

curl -u user:password -d "status=playing with cURL and the Twitter API" http://twitter.com/statuses/update.xml

但是在我的ASP.NET MVC应用程序中,我在我的自定义函数中这样做:

string responseText = String.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
request.Method = "POST";
request.Credentials = new NetworkCredential("username", "password");
request.Headers.Add("status", "Tweeting from ASP.NET MVC C#");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
    responseText = sr.ReadToEnd();
return responseText;

现在的问题是,这个请求是返回403紫禁城,我真的不知道为什么,如果它是完美的卷曲

*\

更新:

我终于成功地让它正常工作了,但是也许有一种方法可以让它变得更干净、更漂亮,因为我在C#上是新手,我需要更多的知识来完成它,通过POST params的方式让我非常困惑,因为很多代码都是用来传递params的。

嗯,我已经创建了一个Gist - http://gist.github.com/215900 ,所以每个人都可以随意修改它。谢谢您的帮助,ğdaş

还可以在这里遵循代码:

public string TwitterCurl()
    //PREVENT RESPONSE 417 - EXPECTATION FAILED
    System.Net.ServicePointManager.Expect100Continue = false;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
    request.Method = "POST";
    request.Credentials = new NetworkCredential("twitterUsername", "twitterPassword");
    //DECLARE POST PARAMS
    string headerVars = String.Format("status={0}", "Tweeting from ASP.NET MVC C#");
    request.ContentLength = headerVars.Length;
    //SEND INFORMATION
    using (StreamWriter streamWriter = new StreamWriter(request.GetRequestStream(), ASCIIEncoding.ASCII))
        streamWriter.Write(headerVars);
        streamWriter.Close();
    //RETRIEVE RESPONSE
    string responseText = String.Empty;
    using (StreamReader sr = new StreamReader(request.GetResponse().GetResponseStream()))
        responseText = sr.ReadToEnd();
    return responseText;
    //I'M NOT SURE WHAT THIS IS FOR            
        request.Timeout = 500000;
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Custom Twitter Agent";
        #if USE_PROXY
            request.Proxy = new WebProxy("http://localhost:3000", false);
        #endif
}
4 19.3K 0 票数 6
EN
asp.net-mvc
api
rest
curl
twitter

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-23 02:32:58

尝试使用Microsoft.Http.HttpClient。这就是你的要求

var client = new HttpClient();
client.DefaultHeaders.Authorization = Credential.CreateBasic("username","password");
var form = new HttpUrlEncodedForm();
form.Add("status","Test tweet using Microsoft.Http.HttpClient");
var content = form.CreateHttpContent();
var resp = client.Post("http://www.twitter.com/statuses/update.xml", content);
string result = resp.Content.ReadAsString();

您可以在 WCF REST初学者工具包预览2 中找到这个库及其源代码,但是它可以独立于其中的其他内容使用。

我在我的推特账户上测试了这段代码,它运行正常。

票数 5
EN

Stack Overflow用户

发布于 2009-10-22 09:02:41

使用 HttpWebRequest 和 HttpWebResponse 的示例代码:

public string GetResponseText(string url) {
    string responseText = String.Empty;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "GET";
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    using (StreamReader sr = new StreamReader(response.GetResponseStream())) {
        responseText = sr.ReadToEnd();
    return responseText;
}

张贴数据:

public string GetResponseText(string url, string postData) {
    string responseText = String.Empty;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    request.ContentLength = postData.Length;
    using (StreamWriter sw = new StreamWriter(request.GetRequestStream())) {
        sw.Write(postData);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    using (StreamReader sr = new StreamReader(response.GetResponseStream())) {
        responseText = sr.ReadToEnd();
    return responseText;
}
票数 2
EN

Stack Overflow用户

发布于 2012-05-01 13:05:34

这是我在调用返回RESTful的JSON时使用的一行代码。

return ((dynamic) JsonConvert.DeserializeObject<ExpandoObject>(
        new WebClient().DownloadString(
            GetUri(surveyId))
    )).data;

Notes

  • Uri是使用surveyId和凭据生成的。
  • 'data‘属性是SurveyGizmo API返回的反序列化JSON对象的一部分。

完整服务

public static class SurveyGizmoService
    public static string UserName { get { return WebConfigurationManager.AppSettings["SurveyGizmo.UserName"]; } }
    public static string Password { get { return WebConfigurationManager.AppSettings["SurveyGizmo.Password"]; } }
    public static string ApiUri { get { return WebConfigurationManager.AppSettings["SurveyGizmo.ApiUri"]; } }
    public static string SurveyId { get { return WebConfigurationManager.AppSettings["SurveyGizmo.Survey"]; } }
    public static dynamic GetSurvey(string surveyId = null)
        return ((dynamic) JsonConvert.DeserializeObject<ExpandoObject>(
                new WebClient().DownloadString(
                    GetUri(surveyId))
            )).data;
    private static Uri GetUri(string surveyId = null)
        if (surveyId == null) surveyId = SurveyId;
        return new UriBuilder(ApiUri)
 
推荐文章
侠义非凡的红金鱼  ·  【Nginx】启动成功无法访问网页(完整的排除方案)_nginx启动成功但是无法访问-CSDN博客
1 年前
会搭讪的骆驼  ·  用Dataproc无服务器从BigQuery数据表编写PySpark表-腾讯云开发者社区-腾讯云
1 年前
跑龙套的大脸猫  ·  如何在Python中获取Windows屏幕截图? (教程) - 掘金
2 年前
千年单身的红薯  ·  shell脚本获取远程服务器执行结果 - SegmentFault 思否
2 年前
痛苦的苹果  ·  Emoji表情转UTF-8编解码、过滤 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号