This commit is contained in:
2025-01-07 10:58:00 +01:00
parent 80316c3e55
commit 633121e743
4 changed files with 60 additions and 48 deletions

View File

@@ -4,6 +4,7 @@ using BS.Shared.DataContracts.Invoicing.XRechnung;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -11,20 +12,49 @@ namespace BeWo.Service.ServiceUtils.XRechnung
{ {
public static class XRechnungSender public static class XRechnungSender
{ {
public static string Send(string url, XRechnungRequest req) private static readonly string XRECHNUNG_SERVER_URL = "https://test2.evplaner.de/xrg/create";
public static string Send(XRechnungRequest request)
{ {
var data = req.ToData(); var dict = request.ToDict();
var response = Send(url, data); var response = GetResponse(dict);
return response; if (response is null)
return null;
var test_str = Encoding.UTF8.GetString(response);
return test_str;
} }
public static string Send(string url, string data) private static byte[] GetResponse(IEnumerable<KeyValuePair<string, string>> kvp)
{ {
var response = OwnSoftSender.SendFormUrlEncoded(url, data); HttpResponseMessage response;
using (var httpClient = new HttpClient())
{
using (var content = new FormUrlEncodedContent(kvp))
{
content.Headers.Clear();
content.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
return response; var task = Task.Run(() => httpClient.PostAsync(XRECHNUNG_SERVER_URL, content));
task.Wait();
response = task.Result;
}
}
if (response is null)
return null;
if (!response.IsSuccessStatusCode)
return null;
var task2 = Task.Run(() => response.Content.ReadAsByteArrayAsync());
task2.Wait();
return task2.Result;
} }
} }
} }

View File

@@ -10,20 +10,6 @@ namespace BS.Shared.AppSender
{ {
public static class OwnSoftSender public static class OwnSoftSender
{ {
public static string SendFormUrlEncoded(string url, string dataString)
{
string response;
using (WebClient client = new WebClient())
{
client.Encoding = Encoding.UTF8;
client.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
response = client.UploadString(url, "POST", dataString);
}
return response;
}
} }
} }

View File

@@ -14,14 +14,16 @@ namespace BS.Shared.DataContracts.Invoicing.XRechnung
public string Url { get; set; } public string Url { get; set; }
public string ToData() public Dictionary<string, string> ToDict()
{ {
var json = $"json={XRechnung}"; var dict = new Dictionary<string, string>();
if (string.IsNullOrEmpty(Url)) dict.Add("json", XRechnung);
return json;
return json + $"&pdf={Url}"; if (!string.IsNullOrEmpty(Url))
dict.Add("pdf", Url);
return dict;
} }
} }
} }

View File

@@ -23,37 +23,33 @@ namespace XRechnungUnitTest
var txt = JsonConvert.SerializeObject(xr); var txt = JsonConvert.SerializeObject(xr);
} }
[TestMethod] //[TestMethod]
public void SendTest() //public void SendTest()
{ //{
var url = "https://test2.evplaner.de/xrg/create"; // var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8);
var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8); // var xr = JsonConvert.DeserializeObject<XRechnung>(json);
var xr = JsonConvert.DeserializeObject<XRechnung>(json); // var xrr = JsonConvert.SerializeObject(xr);
var xrr = JsonConvert.SerializeObject(xr); // //var req = new XRechnungRequest();
//var req = new XRechnungRequest(); // //req.Json = xr;
//req.Json = xr; // //var txt = JsonConvert.SerializeObject(req);
//var txt = JsonConvert.SerializeObject(req); // //xrr = xrr.Replace("ä", "ae").Replace("ö", "oe").Replace("ü", "ue").Replace("ß", "ss");
//xrr = xrr.Replace("ä", "ae").Replace("ö", "oe").Replace("ü", "ue").Replace("ß", "ss"); // var txt = $"json={xrr}";
var txt = $"json={xrr}"; // var response = XRechnungSender.Send();
var response = OwnSoftSender.SendFormUrlEncoded(url, txt); // Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error"));
//}
Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error"));
}
[TestMethod] [TestMethod]
public void SendTestAsRequest() public void SendTestAsRequest()
{ {
var url = "https://test2.evplaner.de/xrg/create";
var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8); var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8);
var xr = JsonConvert.DeserializeObject<XRechnung>(json); var xr = JsonConvert.DeserializeObject<XRechnung>(json);
@@ -63,7 +59,7 @@ namespace XRechnungUnitTest
req.XRechnung = xrr; req.XRechnung = xrr;
var response = XRechnungSender.Send(url, req); var response = XRechnungSender.Send(req);
Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error")); Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error"));
} }
@@ -71,8 +67,6 @@ namespace XRechnungUnitTest
[TestMethod] [TestMethod]
public void SendTestWithUrl() public void SendTestWithUrl()
{ {
var url = "https://test2.evplaner.de/xrg/create";
var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8); var json = File.ReadAllText("invoicetest.json", System.Text.Encoding.UTF8);
var xr = JsonConvert.DeserializeObject<XRechnung>(json); var xr = JsonConvert.DeserializeObject<XRechnung>(json);
@@ -83,7 +77,7 @@ namespace XRechnungUnitTest
req.XRechnung = xrr; req.XRechnung = xrr;
req.Url = Uri.EscapeDataString("https://app5.bewoplaner.de/service/DownloadFile.aspx?key=jhkf4589141324h6543958"); req.Url = Uri.EscapeDataString("https://app5.bewoplaner.de/service/DownloadFile.aspx?key=jhkf4589141324h6543958");
var response = XRechnungSender.Send(url, req); var response = XRechnungSender.Send(req);
Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error")); Assert.IsTrue(!string.IsNullOrWhiteSpace(response) && !response.ToLower().Contains("error"));
} }