我正在使用他们的托管页面集成功能与替代付款进行集成。他们的C#SDK目前没有可用的集成,但是您可以看到它非常简单,我制作了一个小类来发送发布请求并获取JSON响应。
我测试了我在PostMan和cURL上发送的json对象,它们都可以工作,也可以使用身份验证标头,所以我认为它们不是问题。这是我的课程的构造函数:
public AlternativePaymentsCli(string apiSecretKey)
{
this._apiSecretKey = apiSecretKey;
_httpClient = new HttpClient();
_httpClient.DefaultRequestHeaders.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var authInfo = _apiSecretKey;
authInfo = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:", _apiSecretKey)));
// The two line below because I saw in an answer on stackoverflow.
_httpClient.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
_httpClient.DefaultRequestHeaders.Add("Keep-Alive", "3600");
_httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Anything.com custom client v1.0");
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authInfo);
}
以及我发布数据的方法:
public string CreateHostedPageTransaction(HostedPageRequest req)
{
var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
// I send this same json content on PostMan and it works. The json is not the problem
var content = new StringContent(JsonConvert.SerializeObject(req, settings), Encoding.UTF8, "application/json");
var response = _httpClient.PostAsync(this._baseUrl + "/transactions/hosted", content).Result;
var responseText = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
if (response.IsSuccessStatusCode)
return responseText;
return "";
}
然后,我An existing connection was forcibly closed by the remote host
在PostAsync行收到此错误:。这是错误的详细信息:
[SocketException (0x2746): An existing connection was forcibly closed by the remote host]
System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) +8192811
System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) +47
[IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.]
System.Net.TlsStream.EndWrite(IAsyncResult asyncResult) +294
System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar) +149
[WebException: The underlying connection was closed: An unexpected error occurred on a send.]
System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context) +324
System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar) +137
[HttpRequestException: An error occurred while sending the request.]
我正在使用C#4.5,Asp.Net MVC。我一直在阅读相同错误的答案,到目前为止,它们都没有解决我的问题。我在此代码中缺少什么?
谢谢你的帮助
我在您的代码示例中看不到您在设置_baseUrl的值,但是我假设这是在某处完成的。我还假设由于这与付款有关,因此URL是HTTPS。如果远程主机禁用了TLS
1.0,并且您的连接以TLS 1.0的身份进入,则可能会导致该行为。我知道C#4.6默认情况下启用了TLS 1.0 / 1.1 /
1.2支持,但是我认为C#4.6即使支持TLS 1.1和1.2,仍默认仅支持SSL3 / TLS
1.0。如果这是导致此问题的原因,则可以使用以下代码将TLS 1.1和1.2手动添加到启用的值。
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
当使用Photobucket API时,它说... [SocketException(0x2746):远程主机强制关闭了现有连接]System.Net.Sockets.Socket.Receive(Byte[]缓冲区,Int32偏移量,Int32大小,SocketFlags SocketFlags)+139 System.Net.Sockets.NetworkStream.Read(Byte[]缓
正如我前面所说的,我能够在visual studio的调试模式下使其正确工作,但一旦创建了可执行文件,我就不能再读取网页了。如有任何帮助,我们将不胜感激。是什么导致了这个问题?
我正在尝试使用Azure Blob存储。我成功上传了一些图像,但突然我得到了错误: 远程主机强制关闭了现有连接 我研究了一下,每当我试图检查Blob容器是否存在时,都会引发异常。 这是我的代码: BlobClient getter属性:(注意,我已将连接字符串中的敏感数据标记为**) 抛出异常的实际代码: 准确地说,异常发生在我检查容器是否存在的行。 我不知道怎么了。我确信连接字符串是正确的(我复
有人能帮我解决以下异常吗, 我正在使用Oracle OEPE eclipse和weblogic 12c。在我开始开发移动应用程序之前,它工作得很好。 我在eclipse中安装了以下插件。1.Android工具2。JBoos混合移动工具 我的电脑1上安装了以下开源软件。节点Js 2。科尔多瓦3。Ripple仿真器
问题内容: 我正在尝试使用Python Selenium chromedriver在chrome上打开一个网站。Chrome浏览器正在打开(带有警告),并且网址未打开。 版本详细信息:Chrome:68.0.3440.106selenium:3.14.0 chromedriver:2.20 python:2.7 我正在使用以下代码: 我得到以下错误: 我想念什么吗?非常感谢您的帮助 问题答案: 此