【发布时间】:2021-04-09 21:27:39
【问题描述】:
我想将 XML 文件发送到特定网站,但有一些棘手的事情,我无法用 HttpWebResponse 类解决。
文档给了我一个基本的 html 表单(我想转换成 C# 代码):
<html>
<head><meta content="text/html; CHARSET=UTF-8"></head>
<body>
<form action="https://www.targetsite/" method="post" enctype="multipart/form-data">
XML file: <input type="file" name="action-xmlgenerate"><br><br>
<input type="submit" name="generate" value="Generate">
</form>
</body>
</html>
文档还告诉我们:
请求必须是“multiform/form-data”类型,并且必须包含一个名为 action-xmlgenerate 的文件
我不想从计算机上传 XML 文件,我必须在代码中生成 XML 文件并且它必须有一个特定的名称:action-xmlgenerate
我试过了:
Xml 类:
[XmlRoot(ElementName = "seller")]
public class Seller
{
[XmlElement(ElementName = "bank")]
public string Bank { get; set; }
[XmlElement(ElementName = "creditCardNumber")]
public string CreditCardNumber { get; set; }
[XmlElement(ElementName = "emailReplyto")]
public string EmailReplyto { get; set; }
[XmlElement(ElementName = "emailSubject")]
public string EmailSubject { get; set; }
[XmlElement(ElementName = "emailText")]
public string EmailText { get; set; }
}
通讯功能:
public void sendXml()
{
Seller seller = new Seller();
seller.Bank = "asd";
seller.CreditCardNumber = "1234";
seller.EmailReplyto = "a@a.a";
seller.EmailSubject = "asd";
seller.EmailText = "asdasd";
var xmlFile = seller;
byte[] bytes;
bytes = Encoding.ASCII.GetBytes(xmlFile.ToString());
string boundary = $"---------------------------{DateTime.Now.Ticks.ToString("x")}";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://targetsite/");
request.ContentType = "multipart/form-data";
request.Method = "POST";
request.KeepAlive = true;
request.Credentials = CredentialCache.DefaultCredentials;
request.Headers.Add("name=\"action-xmlgenerate\"");
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
}
}
有什么解决办法?
【问题讨论】:
-
您遇到了什么问题?
-
它不会将我的请求发送到正确的端点。我认为我犯了一些小错误。
-
这可能是您正在寻找的答案stackoverflow.com/a/19983672/5417823
-
@BusinessMan 这条线是做什么的:
var xmlFile = Seller;?你是说var xmlFile = seller;吗? -
@PeterCsala 是的,我在这里粘贴不正确。
标签: c# xml api httpwebrequest