Dobrý den,
řeším odesílání dat přes portál veřejné správy a mám menší problém s doručením dat na portál. Z mého počítače vše funguje bez problémů, od zákazníka přes jejich proxy už ne, ale 602XML bez problémů odesílá, jen já ne, bohužel řešení přes 602XML je pro nás nepoužitelné kvůli integraci do mzdového sw.
Posílám kus kódu, kterým odesílání řeším:
Dim httpsReq As System.Net.HttpWebRequest
If (eldpTest = False) Then
httpsReq = System.Net.WebRequest.Create("https://bezpecne.podani.gov.cz/submission")
Else
httpsReq = System.Net.WebRequest.Create("https://bezpecne.dev.gov.cz/submission")
End If
httpsReq.Method = "POST"
httpsReq.ProtocolVersion = System.Net.HttpVersion.Version11
httpsReq.ContentType = "text/xml"
httpsReq.UserAgent = "Mozilla/4.0 (compatible; .NET)"
httpsReq.KeepAlive = False
https()
System.Net.ServicePointManager.CertificatePolicy = New ELDPNet.AcceptAllCertificatePolicy()
'System.Net.ServicePointManager.ServerCertificateValidationCallback = New ELDPNet.AcceptAllCertificatePolicy()
Dim postData As String = ciph.FileToString(fn)
Dim bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(postData)
httpsReq.ContentLength = bytes.Length
Dim ds As IO.Stream = httpsReq.GetRequestStream()
ds.Write(bytes, 0, bytes.Length)
ds.Close()
'odchyceni xml vraceneho serverem
Dim response As System.Net.WebResponse = httpsReq.GetResponse()
Dim respStream As Stream = response.GetResponseStream()
'Dim readResponce As New StreamReader(respStream, System.Text.Encoding.UTF8)
Dim respFile As New FileStream("c:\atemp\eldp\response.xml", FileMode.Create, FileAccess.Write)
Dim buffer(1024) As Byte
Dim Count As Integer = buffer.Length
Do
Count = respStream.Read(buffer, 0, Count)
If Count = 0 Then
Exit Do
End If
respFile.Write(buffer, 0, Count)
Loop
respFile.Close()
respFile.Dispose()
System.GC.Collect()
MsgBox("Vaše podání bylo odesláno.")
Chyba, kterou si přečtu, je to ještě obalené pomocí Try, u zákazníka tvrdí "connection timeout", asi po 60 sekund.
Možná jsem jen zvolil špatnou komponentu, ale nic logičtějšího, než HttpWebRequest jsem nenašel, kdyby u mě nefungoval a já neměl odchycenou odpověď, tak bych ji zavrhl, ale teď nevím.
PS: Pokud někdo znáte posunutí správným směrem i v jazyce C#, nevadí mi to, ve VB píši kvůli šéfům.