» »

[C#] Simobilov Glasnik

[C#] Simobilov Glasnik

zigi ::

Zdravo,

Simobil ima storitev SMS Glasnik, s katerim lahko pošiljaš sms-e. Navodila za pošiljanje so tukaj: navodila

Se je že kdo ukvarjal s tem? Meni ne uspe poslati requesta na strežnik, da bi mi poslalo sms.

Trenutno pa je koda takšna:

			WebRequest request = WebRequest.Create("https://username:password@glasnik.simobil.si");
			request.Method = "POST";
			string stringXML = "<SMSGlasnik version=\"2\"><msisdn>66666666</msisdn><text>poskus</text></SMSGlasnik>";
			byte[] byteArray = Encoding.UTF8.GetBytes(stringXML);
			request.ContentType = "application/x-www-form-urlencoded";
			request.ContentLength = byteArray.Length;
			Stream dataStream = request.GetRequestStream();
			dataStream.Write(byteArray, 0, byteArray.Length);
			dataStream.Close();
			WebResponse response = request.GetResponse();
			dataStream = response.GetResponseStream();
			StreamReader reader = new StreamReader(dataStream);
			string responseFromServer = reader.ReadToEnd();


Javi mi da nisem avtenticiran, čeprav imam vpisan pravo uporabniško ime in geslo. Ima kdo kakšne izkušnje s Simobilovim Glasnikom?
  • spremenil: zigi ()

mHook ::

Poskusi zamenjati prvo vrstico z naslednjim:
WebRequest request = WebRequest.Create("https://glasnik.simobil.si");
request.Credentials = new NetworkCredential("username", "password");

zigi ::

Napredujemo :) Ne javi mi več težav z avtentikacijo.

Kljub temu pa sms-a noče poslati. Response string pa je kar cela stran navodil

Še kakšen nasvet? :)

BlueRunner ::

Navodil sicer nisem videl, da bi vedel kaj delaš narobe, vendar pa to, kar tvoj program pošilja, nikakor ni "application/x-www-form-urlencoded".

Forms submitted with content type application/x-www-form-urlencoded must be encoded as follows:
1. Control names and values are escaped. Space characters are replaced by `+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by `%HH', a percent sign and two hexadecimal digits representing the ASCII code of the character. Line breaks are represented as "CR LF" pairs (i.e., `%0D%0A').
2. The control names/values are listed in the order they appear in the document. The name is separated from the value by `=' and name/value pairs are separated from each other by `&'.

Niz, ki ga pošiljaš, tako ne upošteva ne 1. ne 2. točke, upoštevati pa bi moral obe. Ker pa nisem navodil za tega glasnika nikoli videl, ne morem reči, ali delaš napako ti, ali pa jo dela S!

Zgodovina sprememb…

mHook ::

Pred vrstico get bytes poskusi vstaviti naslednjo vrstico:
stringXML = Server.URLEncode(stringXML)


Poskusi request (prva vrsta) poslati na https://glasnik.simobil.si/xml/ (dokumentacija piše, da ti v tem primeru vrne XML).

Na koncu ti manjka še reader. Close(), ki zapre tudi response stream.

Zgodovina sprememb…

  • spremenil: mHook ()

Looooooka ::

Dim xml_doc As New XmlDocument

Dim root As XmlElement
root = xml_doc.CreateElement("SMSglasnik")
root.SetAttribute("version", "2")
Dim node As XmlElement
node = xml_doc.CreateElement("msisdn")
node.InnerText = "38641666666"
root.AppendChild(node)
node = xml_doc.CreateElement("text")
node.InnerText = "weeeeeee"
root.AppendChild(node)
node = xml_doc.CreateElement("send_date")
node.InnerText = Year(Now) & "-" & Month(Now) & "-" & Microsoft.VisualBasic.Day(Now) & " " & Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
root.AppendChild(node)
node = xml_doc.CreateElement("lifetime")
node.InnerText = "72"
root.AppendChild(node)
node = xml_doc.CreateElement("msg_id")
node.InnerText = system.guid.newguid.tostring
root.AppendChild(node)

xml_doc.InnerXml = root.OuterXml


Dim lcPostData As String = ("xml=" & xml_doc.OuterXml)
Dim encoding As New System.Text.ASCIIEncoding
Dim WebRequest As Net.HttpWebRequest = Net.WebRequest.Create("https://username:password@glasnik.simob...
Dim CookieC As New Net.CookieContainer


Dim networkCredential As New NetworkCredential("username", "password")


Dim Data() As Byte = encoding.GetBytes(lcPostData)
With WebRequest
.KeepAlive = False
.Method = "POST"
.AllowAutoRedirect = True
.ContentType = "application/x-www-form-urlencoded"
.ContentLength = Data.Length
.CookieContainer = CookieC
.PreAuthenticate = True
.Credentials = networkCredential
End With



Dim loPostData As Stream = WebRequest.GetRequestStream
loPostData.Write(Data, 0, Data.Length)
loPostData.Close()
Dim WebResponse As Net.HttpWebResponse
Try
WebResponse = WebRequest.GetResponse()
Catch ex As Exception
msgbox("eeeeeeek!")
exit sub
End Try


Dim netStream As StreamReader = New StreamReader(WebResponse.GetResponseStream)

If WebResponse.StatusCode = HttpStatusCode.OK Then
msgbox("weeeeeeeee" & netStream.ReadToEnd)

else
msgbox("crapper" & netStream.ReadToEnd)
end if

Looooooka ::

ceprou je pr netStream.ReadToEnd treba ponavad se pogledat da ni simobil nazaj prbil kksn evil msg...ce si recimo placljiv sms poslal al pa kj tazga pa clovk ni meu kesha...and so on =)

mHook ::

zigi: kot igleda, si pozabil na začetku "xml="

Looooooka: Verjetno je bolje, če zamenjaš vrstico xml_doc.InnerXml = root.OuterXml z
xml_doc. AppentChild(root).

zigi ::

Hvala lepa vsem, deluje :)

user4683 ::

Kakšni pa so pogoji in cenik storitve? SMS lahko pošiljaš v vsa slovenska mobilna omrežja, ali slučajno tudi širše?

mHook ::

Prek Clickatella lahko pošiljaš po celem svetu za 0,0352 EUR za SMS.
Imaš api za prek http, https, ftp in smtp tako da lahko pošiljaš iz .NET (C#, VB), kot tudi iz php in ostalih.

EDIT: Pa prvih 10 je brezplačnih

Zgodovina sprememb…

  • spremenil: mHook ()

zigi ::

naročnina je 10.000 SIT na mesec (ok, malo sem za cajtom :) ), v to pa je vključenih 1.000 SMS-ov

Nadalje: do 5.000 SMS-ov je cena 10SIT/SMS, do 100.000 5SIT/SMS, nad 100.00 3 SIT/SMS

Looooooka ::

eni africani majo isto...sam pr njih je ql to k lahko namest cifre uporablas crke...skoda k mobitel pa simobil tega zaenkrat ne omogocata.

Mrch ::

Osebno se tudi ukvarjam z dvosmernim SiMobilovim glasnikom. Nikakor mi ne uspe pripraviti .NET aplikacije za sprejem POST XML z njohove strani. Zaenkrat imam s Simobilom vzpostavljeno začasno številko,ključno besedo, uporabniško ime in geslo. Za pošiljanje sporočil, mi je jasno kam s parametri...vendar pri sprejemu ne. Aplikacija na serverju izgleda tako:
-----------------------
int len = (int)Request.InputStream.Length;
if (Request.InputStream.Length != 0)
{
byte[] buffer = new byte[len];
Request.InputStream.Read(buffer, 0, len);
string line = System.Text.Encoding.UTF8.GetString(buffer);
PNSMS.Service1 svc = new PNSMS.Service1();
Response.ContentType = "text/xml";
Response.Write(svc.CollectXML(line));
Response.End();
-----------------------
Aplikacija ne dela drugega kot sprejme POST-an XML in ga pošlje dalje na drugi web service, ki obdela xml in ga vrne nazaj. Če poskušam poslati xml prek svojih aplikacij za POST XML ali Mobitelovega emulatorja za pošiljanje sporočil, pride xml do web servica. Iz SiMobilovega omrežja pa nikakor.

A ima kdo kako rešitev za sprejem sporočil SiMobilovega glasnika? Žal si z njihovim supportom in navodili ne morem pomagati...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344318451 (58454) Macketina
»

E-račun

Oddelek: Programiranje
217072 (3835) ivanhoe5x
»

[C# asp.NET web forma] Kam zgine cookie oz. zkj se izbriše?

Oddelek: Programiranje
61031 (845) Morenov
»

ASP.NET + C# vprašanje

Oddelek: Programiranje
342645 (1659) Morenov
»

Kako z VS.NET priti do izvorne kode neke html strani?

Oddelek: Programiranje
91266 (1061) Microsoft

Več podobnih tem