私はポストマンでそれをしようとすると、それがうまく動作します。ただし、HttpClient APIを使用して投稿した場合、投稿するXMLデータに関連するシナリオでは、次のエラーが表示されます。C#HttpClient APIと郵便配達員テストの違いは?クライアントの呼び出しは郵便配達に動作しますが、いないC#のHttpClient getAsync私は残りのAPIのポストをテストしてい
"トランスポート接続からデータを読み取れません:既存の接続が強制的に閉じられました。リモートホスト。"
しかし、同じXMLコンテンツは、ステータスOKと適切な対応とポストマンに正常に動作します。
誰もがC#のHttpClient APIと郵便配達のテストを使用しての間の違いは何か知っていますか?郵便配達員の動作に合わせてAPIコールを設定するにはどうすればよいですか?
ここ私はソースコードを添付し、ポストマンのスクリーンショット
public void createLoan()
{
string baseCreateLoanUrl = @"https://serverhost/create?key=";
var strUCDExport = XDocument.Load(@"C:\CreateLoan_testcase.xml");
using (var client = new HttpClient())
{
var content = new StringContent(strUCDExport.ToString(), Encoding.UTF8, Mediatype);
string createLoanApi = string.Concat(baseCreateLoanUrl, APIKey);
try
{
var response = client.PostAsync(createLoanApi, content).Result;
}
catch (Exception ex)
{
MessageBox.Show("Error Happened here...");
throw;
}
if (response.IsSuccessStatusCode)
{
// Access variables from the returned JSON object
string responseString = response.Content.ReadAsStringAsync().Result;
JObject jObj = JObject.Parse(responseString);
if (jObj.SelectToken("failure") == null)
{
// First get the authToken
string LoanID = jObj["loanStatus"]["id"].ToString();
MessageBox.Show("Loan ID: " + LoanID);
}
else
{
string getTokenErrorMsg = string.Empty;
JArray errorOjbs = (JArray) jObj["failure"]["errors"];
foreach (var errorObj in errorOjbs)
{
getTokenErrorMsg += errorObj["message"].ToString() + Environment.NewLine;
}
getTokenErrorMsg.Dump();
}
}
}
感謝!
あなたはur postに契約(インターフェース)を追加できますか? – ahankendi
申し訳ありません@ahankendi、残念ながら、私はサーバー側のAPIにアクセスする必要はありません。 – mting923
おそらく問題とはあまり関係がありませんが、.Resultの使用を中止し、代わりにawaitの使用を開始してください。 .Resultはスレッドをブロックし、注意しないとデッドロックを引き起こす可能性があります。私はあなたの人生をはるかに簡単にするasync/awaitで作業する方法を学ぶことを提案します。 :) –