首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# WebRequest不能使用LinkShare中的此链接

C# WebRequest不能使用LinkShare中的此链接
EN

Stack Overflow用户
提问于 2010-11-13 10:25:22
回答 1查看 541关注 0票数 0

这让我有点抓狂。我正在尝试做一些非常简单的事情,我以前已经做过很多次了。只是尝试调用REST API。

我试图用endpoint = "http://feed.linksynergy.com/productsearch?token=717f8c8511725ea26fd5c3651f32ab187d8db9f4b208be781c292585400e682d&keyword=DVD"“调用GetMessage,但它总是返回空字符串。如果我传递给它任何其他有效的网址,它将会工作。但如果我只是将原始网址复制并粘贴到web浏览器中,它返回正常!

有没有聪明的开发人员能告诉我是怎么回事?

下面的代码。提前谢谢。

詹姆斯

公共string请求(String GetMessage){ HttpWebRequest endPoint= CreateWebRequest( endPoint);

代码语言:javascript
复制
        using (var response = (HttpWebResponse)request.GetResponse())
        {
            var responseValue = string.Empty;

            if (response.StatusCode != HttpStatusCode.OK)
            {
                string message = String.Format("POST failed. Received HTTP {0}", response.StatusCode);
                throw new ApplicationException(message);
            }

            // grab the response
            using (var responseStream = response.GetResponseStream())
            {
                using (var reader = new StreamReader(responseStream))
                {
                    responseValue = reader.ReadToEnd();
                }
            }

            return responseValue;
        }
    }

私有请求(String HttpWebRequest ){ var CreateWebRequest= (HttpWebRequest)WebRequest.Create( endPoint);

代码语言:javascript
复制
        request.Method = "GET";
        request.ContentLength = 0;
        request.ContentType = "text/xml";

        return request;
  }
EN

回答 1

Stack Overflow用户

发布于 2010-11-13 10:43:09

不知道为什么设置ContentLength/ContentType -这通常是针对HTTP POST的,其中有一个请求体,您可以通过流向其写入数据。

这是一个HTTP GET,所以没有请求体。(仅限URI和查询字符串)

这应该是可行的:

代码语言:javascript
复制
using System;  
using System.IO;  
using System.Net;  
using System.Text;  

// Create the web request  
HttpWebRequest request = WebRequest.Create("http://www.someapi.com/") as HttpWebRequest;  

// Get response  
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)  
{  
    // Get the response stream  
    StreamReader reader = new StreamReader(response.GetResponseStream());  

    // Console application output  
    Console.WriteLine(reader.ReadToEnd());  
}

编辑

@Gabe也是非常正确的-在另一台没有任何防火墙/代理服务器的计算机上尝试一下。

我的工作PC位于代理服务器之后,所以为了进行基于REST的HTTP调用,我需要这样做:

代码语言:javascript
复制
var proxyObject = new System.Net.WebProxy("http://myDomain:8080/", true);
System.Net.WebRequest req = System.Net.WebRequest.Create("http://www.someapi.com/");
req.Proxy = proxyObject;
proxyObject.Credentials = New System.Net.NetworkCredential("domain\username","password")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4170612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档