0

我正在与 Spreedly 合作,我遇到了我认为是一个小问题。

对于我的生活,我不明白为什么我的代码没有正确发送我的上下文......

这是我的代码(凭据已更改),它返回错误 (422) Unprocessable Entity,我只能假设这意味着正在发送的 XML 有问题,但是当我设置断点时它似乎是正确的。

string url = "https://core.spreedly.com/v1/gateways.xml";
WebRequest request = WebRequest.Create(url);
request.ContentType = "Content-type: application/xml";
request.Method = "POST";
request.Credentials = new NetworkCredential("Ll6fAtoVSTyVMlJEmtpoJV8Shw5", "RKOCG5D8D3fZxDSg504D0IxU2XD4Io5VXmyzdCtTivHFTTSylzM2ZzTWFwVH4ucG");
XElement xelement = new XElement("gateway", new XElement("gateway_type", "test"));
byte[] buffer = Encoding.UTF8.GetBytes(xelement.ToString());
request.ContentLength = buffer.Length;
Stream reqstr = request.GetRequestStream();
reqstr.Write(buffer, 0, buffer.Length);
reqstr.Close();
WebResponse response = request.GetResponse();

我不经常使用 WebRequest,所以很可能我错过了一些简单的东西。

在这里疯狂地保存他们的文档。

这些示例在 curl 中,并说我应该发送以下内容:

$ curl https://core.spreedly.com/v1/gateways.xml \
-u 'Ll6fAtoVSTyVMlJEmtpoJV8Shw5:RKOCG5D8D3fZxDSg504D0IxU2XD4Io5VXmyzdCtTivHFTTSylzM2ZzTWFwVH4ucG' \
-H 'Content-Type: application/xml' \
-d '<gateway>
      <gateway_type>test</gateway_type>
    </gateway>'

任何帮助将不胜感激。

谢谢你。

4

2 回答 2

0

尝试更改以下行:

request.ContentType = "application/xml";
于 2014-02-10T04:11:36.330 回答
0

交易失败时快速返回 422。尝试使用 HttpClient 而不是 WebRequest。

var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", 
"ENVIRONMENT_KEY:ACCESS_SECRET");
var content = new StringContent(data, Encoding.UTF8, "application/json");
var response = client.PostAsync(url, content).Result;

string responseJson;
using (HttpContent resp = response.Content)
{
    responseJson = resp.ReadAsStringAsync().Result; 
}

return responseJson;
于 2018-06-28T13:35:00.873 回答