2013-05-08 62 views
1

我正在查看namecheap api,并且遇到一些困难。我试图建立沙盒帐户等与样品反应后访问API是XML格式:通过API调用访问并获得响应

<ApiResponse Status="OK" xmlns="http://api.namecheap.com/xml.response"> 
    <Errors /> 
    <Warnings /> 
    <RequestedCommand>namecheap.domains.check</RequestedCommand> 
    <CommandResponse> 
    <DomainCheckResult Domain="google.com" Available="false" /> 
    </CommandResponse> 
    <Server>WEB1-SANDBOX1</Server> 
    <GMTTimeDifference>--4:00</GMTTimeDifference> 
    <ExecutionTime>0.875</ExecutionTime> 
</ApiResponse> 

我知道如何解析XML,但我需要一些指导,是如何获得从API调用的实际请求/响应部分开始。

我知道我需要发送哪些参数,并且我知道我需要api键和url,但是如何编写WebRequest和WebResponse部分呢?或者Linq能否为我提供一种实现这一目标的途径?

我试图用:

WebRequest req = HttpWebRequest.Create(url + apikey + username + command + domain); 
WebResponse response = req.GetResponse(); 

但我不明白的方式做可变response什么。

如何才能对此API进行非常简单的API调用并将其响应转换为XML格式,以便我可以解析它?

真的很感谢任何帮助。

回答

2

您需要获得相关和读取响应流从它:

// Get the stream associated with the response. 
Stream receiveStream = response.GetResponseStream(); 

StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8); 

Console.WriteLine ("Response stream received."); 
Console.WriteLine (readStream.ReadToEnd()); 
+0

为什么这样做得到downvoted?它看起来对我来说是正确的答案。 readStream.ReadToEnd()将返回响应中的内容字符串。 – speckledcarp 2013-05-08 20:31:40

+0

不知道。感谢您的帮助:-) – 2013-05-08 23:29:51

-2

WebResponse是抽象的,你必须将其转换为HttpWebResponse

HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 

然后,您将能够访问里面,你要寻找的各种信息。


此外,您可能,如果你只是在做简单的Web请求考虑使用WebClient,这是更容易......从字面上一样容易的工作:

string response = new WebClient().DownloadString("http://somewebsite.com/some/resource?params=123"); 
+0

谢谢SpikeX,但所做的只是在页面上显示'System.Net.HttpWebResponse'。根本没有回应。 – 2013-05-08 20:19:45

+0

你没有显示显示任何内容的代码部分,所以我没有帮助。如果您需要更多帮助,则需要显示更多代码。我无法读懂你的想法。 – qJake 2013-05-08 20:20:27

+0

@SpikeX你为什么从我的帖子中删除评论?您最初从MSDN发布的链接显示了与我发布的代码完全相同的代码 - 因为这是我从中获得的代码 - 那么,我的答案又是怎么回事? – Icarus 2013-05-08 20:29:22