نمایش نتایج 1 تا 13 از 13

نام تاپیک: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

  1. #1

    Question نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    با سلام
    دوستان یه کمک میخواستم در مورد اینکه از یه وب سرویس ارسال پیامک که لیست پیامهایی که به شماره اختصاصی فرستاده شدن رو توی گرید ویووو بتونم نمایش بدم و در نهایت تاریخی که در Result داده رو تبدیل کنه به تاریخ دریافت پیام



    اینم راهنمای سایته

    برای استفاده از تمامی سرویس ها ، شما می بایست در فیلد Authorization ، متعلق به هدر درخواست ) RequestHeader )رشته ای را که به فرم زیر محاسبه می گردد قرار دهید .- نام کاربری و رمز خود را به شکل زیر درون یک متغییر بریزید .
    string Auth = username + ":" + password
    - خروجی را توسط الگوریتم Base64 کد گذاری کنید .
    string encodedAuth = encode with Base46
    - در این مرحله ، به ابتدای خروجی مرحله قبل رشته ی " Basic " را به فرم زیر قرار دهید .
    string authHeader = "Basic " + encodedAuth
    - در نهایت رشته ی به دست آمده را در فیلد Authorization متعلق به هدر درخواست ) Request Header ) قرار دهید .
    رشته مورد نظر می بایست در هدر تمامی در خواست ها ارسال گردد .


    از این متد برای واکشی ، لیست پیام های در یافتی استفاده می شود . پارامتر های ورودی
    نام پارامتر نوع پارامتر توضیحات
    PhoneNumber string شماره اختصاصی
    StartDate long تاریخ شروع به صورت TimeStamp
    EndDate long تاریخ شروع به صورت TimeStamp
    Page Int شماره صفحه



    پارامتر های خروجی
    نام پارامتر نوع پارامتر توضیحات
    Code Int کد پیام دریافتی
    Message string متن پیام دریافتی
    Result JSON Object در صورت عدم خطا پارامتر های زیر را فراهم میکند


    Result
    نام پارامتر نوع پارامتر توضیحات
    Page Int شماره صفحه
    TotalPage Int تعداد کل صفحات
    ReceivedMsgs JSON Object در صورت عدم خطا پارامتر های زیر را فراهم میکند



    ReceivedMsgs
    نام پارامتر نوع پارامتر توضیحات
    MsgBody string متن پیام دریافتی
    Mobile string موبایل ارسال کننده پیام
    Date JSON Object تاریخ دریافت پیامک به صورت TimeStamp


    نمونه پارامترهای ارسالی
    {
    "PhoneNumber": "98300085552000111",
    "StartDate":1537701000 ,
    "EndDate":1537701659 ,
    "Page": 1
    }
    نمونه پارامترهای خروجی
    {
    "Code": 0,

    "Message": " است شده انجام موفقیت با عملیات ",
    "Result":[{"Page":1,"TotalPage":"20","ReceivedMsgs":[{"MsgBody":"متن پیام " , "Mobile ":"موبایل " , "Date":1537701658 }]}]


  2. #2
    کاربر دائمی آواتار taghvajou
    تاریخ عضویت
    تیر 1387
    محل زندگی
    تهران
    سن
    35
    پست
    571

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    سلام
    اولش گفتین که میخواین فلان کار رو بکنین .
    خب آخرش نگفتین دقیقا سوال الان چیه؟

  3. #3

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط taghvajou مشاهده تاپیک
    سلام
    اولش گفتین که میخواین فلان کار رو بکنین .
    خب آخرش نگفتین دقیقا سوال الان چیه؟
    سلام
    اولش گفتم که - لیست پیامهایی که به شماره اختصاصی فرستاده شدن رو توی گرید ویووو بتونم نمایش بدم
    به قولی با استفاده از اون الگو و نمونه ها کد رو بنویسم که چک کنه و پیام ها رو با استفاده از

    PhoneNumber string شماره اختصاصی
    StartDate long تاریخ شروع به صورت TimeStamp
    EndDate long تاریخ شروع به صورت TimeStamp
    Page Int شماره صفحه


    آخرین ویرایش به وسیله aidin2345 : چهارشنبه 13 فروردین 1399 در 23:39 عصر

  4. #4

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط aidin2345 مشاهده تاپیک
    با سلام
    دوستان یه کمک میخواستم در مورد اینکه از یه وب سرویس ارسال پیامک که لیست پیامهایی که به شماره اختصاصی فرستاده شدن رو توی گرید ویووو بتونم نمایش بدم و در نهایت تاریخی که در Result داده رو تبدیل کنه به تاریخ دریافت پیام
    دو تا کار باید انجام بشه، اولی ارسال درخواست و دریافت پاسخ ئه و دومی تفسیر JSON پاسخ.
    برای اینکه DataContractJsonSerializer بتونه JSON رو بخونه کلاس های مرتبط رو تعریف می کنیم :

    کلاس اصلی که JSON میخونه :

    [DataContract]
    private class PageData
    {
    [DataMember]
    public int Code { get; set; }

    [DataMember]
    public string Message { get; set; }

    [DataMember]
    public ResultData[] Result { get; set; }
    }


    و محتویات اون کلاس :

    [DataContract]
    private class ResultData
    {
    [DataMember]
    public int Page { get; set; }

    [DataMember]
    public int TotalPage { get; set; }

    [DataMember]
    public MessageData[] ReceivedMsgs { get; set; }
    }

    [DataContract]
    private class MessageData
    {
    [DataMember]
    public string MsgBody { get; set; }

    [DataMember]
    public string Mobile { get; set; }

    [DataMember]
    public long Date { get; set; }
    }


    و یک کلاس ایجاد می کنیم که همه عملیات رو از داخلش انجام بده :

    public class SmsProvider
    {
    public SmsProvider(string username, string password);

    public DataTable GetMessages(string phoneNumber, string url, DateTime startDate, DateTime endDate);
    }


    در نهایت ابتدا یک شیء از SmsProvider با نام کاربری و رمز عبور مورد نظر ایجاد می کنیم و بعد با GetMessages درون یک جدول DataTable پیام ها رو دریافت می کنیم.
    در متد سازنده کلاس authHeader_ رو که در درخواست ها درون Authorization ثبت میشه مقدار دهی می کنیم :

    private readonly string _authHeader;

    public SmsProvider(string username, string password)
    {
    var auth = username + ":" + password;
    var encodedAuth = Convert.ToBase64String(Encoding.UTF8.GetBytes(auth ));
    _authHeader = "Basic " + encodedAuth;
    }


    و دو تا متد می سازیم که بین DateTime و Timestamp تبدیل داده رو انجام بده :

    private static long GetUnixTimestamp(DateTime dateTime)
    {
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
    return (long)TimeZoneInfo.ConvertTimeToUtc(dateTime).Subt ract(epoch).TotalSeconds;
    }

    private static DateTime GetDateTime(long timestamp)
    {
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
    return epoch.AddSeconds(timestamp);
    }


    و GetMessage رو طوری کد نویسی می کنیم که اول یک DataTable بسازه، ستون هاش رو ایجاد کنه و صفحه اول رو دریافت کنه و پیام هاش رو در DataTable درج کنه و بعد اگر تعداد کل صفحات بیشتر از 1 بود صفحات بعدی رو هم دریافت کنه. این متد به متد GetPage وابسته است که باید یک صفحه رو دریافت کنه و بعد با متد DecodePage هم JSON رو تفسیر کنه.

    public DataTable GetMessages(string phoneNumber, string url, DateTime startDate, DateTime endDate)
    {
    var dt = new DataTable();
    dt.Columns.Add("Date", typeof(DateTime));
    dt.Columns.Add("Mobile");
    dt.Columns.Add("MsgBody");
    var bytes = GetPage(phoneNumber, url, startDate, endDate, 1);
    var totalPage = DecodePage(bytes, dt);
    for (var i = 2; i <= totalPage; i++)
    {
    bytes = GetPage(phoneNumber, url, startDate, endDate, i);
    DecodePage(bytes, dt);
    }
    return dt;
    }


    در متد GetPage یک صفحه رو دریافت می کنیم، چیزی که دریافت میشه آرایه ای از بایت ها است که قاعدتا رشته در سیستم UTF8 خواهد بود :

    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    using (var client = new WebClient())
    {
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    var values = new NameValueCollection
    {
    ["PhoneNumber"] = phoneNumber,
    ["StartDate"] = GetUnixTimestamp(startDate).ToString(),
    ["EndDate"] = GetUnixTimestamp(endDate).ToString(),
    ["Page"] = page.ToString()
    };
    return client.UploadValues(url, values);
    }
    }


    برای تفسیر JSON از DecodePage استفاده می کنیم، علاوه بر اضافه کردن پیام ها در جدول dt این متد تعداد کل صفحات رو بر می گردونه :

    private static int DecodePage(byte[] bytes, DataTable dt)
    {
    var serializer = new DataContractJsonSerializer(typeof(PageData));
    using (var stream = new MemoryStream(bytes))
    {
    stream.Position = 0;
    var page = (PageData)serializer.ReadObject(stream);
    if (page.Code != 0)
    {
    throw new Exception(page.Message);
    }
    if ((page.Result == null) || (page.Result.Length == 0))
    {
    return 0;
    }
    var result = page.Result[0];
    if (result.ReceivedMsgs == null)
    {
    return result.TotalPage;
    }
    foreach (var message in result.ReceivedMsgs)
    {
    var row = dt.NewRow();
    row["Date"] = GetDateTime(message.Date);
    row["Mobile"] = message.Mobile;
    row["MsgBody"] = message.MsgBody;
    dt.Rows.Add(row);
    }
    return result.TotalPage;
    }
    }


    اگر فرض کنیم که یک DataGridView رو روی فرم قرار داده ایم، با همچین کدی می توانیم از کلاس SmsProvider استفاده کنیم که فرضا در طول یک ماه گذشته پیام ها رو دریافت کنه و نمایش بده :

    try
    {
    var url = "https://www.xxxxxxxxx.com/api/smsAPI/ReceiveMessages";
    var phoneNumber = "98300085552000111";
    var startDate = DateTime.Now.AddMonths(-1);
    var endDate = DateTime.Now;
    var x = new SmsProvider("username", "password");
    var dt = x.GetMessages(phoneNumber, url, startDate, endDate);
    dataGridView1.DataSource = dt;
    }
    catch (Exception ex)
    {
    MessageBox.Show(this, ex.Message, ex.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
    }


    و کد پروژه :
    SmsReader.rar

  5. #5

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    [QUOTE=the king;2429699]
    [/CSHARP]

    در متد GetPage یک صفحه رو دریافت می کنیم، چیزی که دریافت میشه آرایه ای از بایت ها است که قاعدتا رشته در سیستم UTF8 خواهد بود :
    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    using (var client = new WebClient())
    {
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    var values = new NameValueCollection
    {
    ["PhoneNumber"] = phoneNumber,
    ["StartDate"] = GetUnixTimestamp(startDate).ToString(),
    ["EndDate"] = GetUnixTimestamp(endDate).ToString(),
    ["Page"] = page.ToString()
    };
    return client.UploadValues(url, values);
    }
    }




    سلام
    THE KING جان عزیز دست گلت درد نکنه ، هر بار شرمنده کردی

    فقط به این قسمت که مشخص کردم 12 تا خطا میگیره


    1256.jpg

  6. #6

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط aidin2345 مشاهده تاپیک
    سلام
    THE KING جان عزیز دست گلت درد نکنه ، هر بار شرمنده کردی

    فقط به این قسمت که مشخص کردم 12 تا خطا میگیره


    1256.jpg
    مثل خود Visual Studio که هر بار نسخه جدیدتری ازش ارائه شده #C هم نسخه داره و ویژوال استدیو های جدیدتر نسخه #C بالاتری رو پشتیبانی می کنند که امکانات و قابلیت های جدیدتری داره. ویژوال استدیو تون قدری قدیمی است و این سبک نوشتن مدخل های دیکشنری که بهش Dictionary Initializer میگن رو در #C اش نداره :

    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    if (url.StartsWith("local://", StringComparison.Ordinal))
    {
    return Encoding.UTF8.GetBytes(File.ReadAllText( url.Substring(8)));
    }
    using (var client = new WebClient())
    {
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    var values = new NameValueCollection
    {
    ["PhoneNumber"] = phoneNumber,
    ["StartDate"] = GetUnixTimestamp(startDate).ToString(),
    ["EndDate"] = GetUnixTimestamp(endDate).ToString(),
    ["Page"] = page.ToString()
    };
    return client.UploadValues(url, values);
    }
    }

    برای حل مشکل، تبدیلش می کنیم به شیوه قدیمی تر که بعد از ایجاد کردن شیء values مدخل ها رو یکی یکی واردش می کنیم :

    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    if (url.StartsWith("local://", StringComparison.Ordinal))
    {
    return Encoding.UTF8.GetBytes(File.ReadAllText( url.Substring(8)));
    }
    using (var client = new WebClient())
    {
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    var values = new NameValueCollection();
    values["PhoneNumber"] = phoneNumber;
    values["StartDate"] = GetUnixTimestamp(startDate).ToString();
    values["EndDate"] = GetUnixTimestamp(endDate).ToString();
    values["Page"] = page.ToString();
    return client.UploadValues(url, values);
    }
    }

  7. #7

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    مثل خود Visual Studio که هر بار نسخه جدیدتری ازش ارائه شده #C هم نسخه داره و ویژوال استدیو های جدیدتر نسخه #C بالاتری رو پشتیبانی می کنند که امکانات و قابلیت های جدیدتری داره. ویژوال استدیو تون قدری قدیمی است و این سبک نوشتن مدخل های دیکشنری که بهش Dictionary Initializer میگن رو در #C اش نداره :

    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    if (url.StartsWith("local://", StringComparison.Ordinal))
    {
    return Encoding.UTF8.GetBytes(File.ReadAllText( url.Substring(8)));
    }
    using (var client = new WebClient())
    {
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    var values = new NameValueCollection
    {
    ["PhoneNumber"] = phoneNumber,
    ["StartDate"] = GetUnixTimestamp(startDate).ToString(),
    ["EndDate"] = GetUnixTimestamp(endDate).ToString(),
    ["Page"] = page.ToString()
    };
    return client.UploadValues(url, values);
    }
    }

    برای حل مشکل، تبدیلش می کنیم به شیوه قدیمی تر که بعد از ایجاد کردن شیء values مدخل ها رو یکی یکی واردش می کنیم :

    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    if (url.StartsWith("local://", StringComparison.Ordinal))
    {
    return Encoding.UTF8.GetBytes(File.ReadAllText( url.Substring(8)));
    }
    using (var client = new WebClient())
    {
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    var values = new NameValueCollection();
    values["PhoneNumber"] = phoneNumber;
    values["StartDate"] = GetUnixTimestamp(startDate).ToString();
    values["EndDate"] = GetUnixTimestamp(endDate).ToString();
    values["Page"] = page.ToString();
    return client.UploadValues(url, values);
    }
    }
    سلام
    آقا ممنونم که به دادم رسیدی
    یه دوتا مساله
    1- اینکه این سرویس رو بعد اینکه کامپایل کردم و روی سیستم افراد دیگه که ویندوز 7 دارن !!! اونوقت روی سیستم اونا مشکل ایجاد میکنه ؟؟

    چون بعد تغیر کدها روی سیستم خودم که ویندوزش 10 ه و ویژوال استادیو 20012 خطای زیر رو داد

    Untitled.jpg

    و یه سیستم دیگه که ویندوز 7 سرویس پک 1 و آپدیت 2019 داره با ویژوال استادیو 2019
    هم اجرا کردنی فوری استوپ میکنه


    الان دارم ویژوال استادیو 2017 نصب میکنم ببینم روی اون چطور میشه

  8. #8

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    سلام
    the king عزیز متاسفانه هر کاری کردم همون خطا رو میده
    قربوت دستت یه کمک کن

  9. #9

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط aidin2345 مشاهده تاپیک
    سلام
    the king عزیز متاسفانه هر کاری کردم همون خطا رو میده
    قربوت دستت یه کمک کن
    احتمالا برخی از این موارد ربطی به دلیل خطای مورد نظر ندارند، اما این موارد رو امتحان کنید :
    • وقتی پروژه تون رو در ویژوال استدیو باز کردید ابتدا در پنجره Solution Explorer فایل های کد پروژه تان را بررسی کنید و ببینید App.config یا فایل دیگری با پسوند config در آن هست یا نه. اگر بود همان فایل را ویرایش می کنیم و اگر نبود باید یک نمونه اش را که بهش Application Configuration File می گویند اضافه کنیم.
    • برای اضافه کردن App.config به پروژه در منوی Project ویژوال استدیو گزینه ...Add New Item رو انتخاب کنید و بین گزینه ها Application Configuration File را انتخاب نمایید.
    • حالا فایل config مورد نظر را باز کرده و ویرایش کنید. ظاهرش چیزی شبیه به اینها است :



    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    </configuration>



    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    </configuration>

    در میان تگ شروع و پایان configuration یک تگ جدید به نام system.net را اضافه می کنیم که جمعا 5 سطر جدید خواهد بود :

    <system.net>
    <settings>
    <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
    </system.net>


    مثلا :

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <system.net>
    <settings>
    <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
    </system.net>
    </configuration>



    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.net>
    <settings>
    <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
    </system.net>
    </configuration>

    • به متد GetPage دو سطر کد اضافه کنید. یک سطر مربوط به SecurityProtocol و یک سطر مربوط به Credentials


    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;
    client.Credentials = CredentialCache.DefaultCredentials;

    اون دو سطر در این موقعیت ها اضافه می شوند، اولی درست قبل از using و دومی درست بعد از using :

    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    if (url.StartsWith("local://", StringComparison.Ordinal))
    {
    return Encoding.UTF8.GetBytes(File.ReadAllText(url.Substr ing(8)));
    }
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;
    using (var client = new WebClient())
    {
    client.Credentials = CredentialCache.DefaultCredentials;
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    .
    .
    .

  10. #10

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    احتمالا برخی از این موارد ربطی به دلیل خطای مورد نظر ندارند، اما این موارد رو امتحان کنید :
    • وقتی پروژه تون رو در ویژوال استدیو باز کردید ابتدا در پنجره Solution Explorer فایل های کد پروژه تان را بررسی کنید و ببینید App.config یا فایل دیگری با پسوند config در آن هست یا نه. اگر بود همان فایل را ویرایش می کنیم و اگر نبود باید یک نمونه اش را که بهش Application Configuration File می گویند اضافه کنیم.
    • برای اضافه کردن App.config به پروژه در منوی Project ویژوال استدیو گزینه ...Add New Item رو انتخاب کنید و بین گزینه ها Application Configuration File را انتخاب نمایید.
    • حالا فایل config مورد نظر را باز کرده و ویرایش کنید. ظاهرش چیزی شبیه به اینها است :



    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    </configuration>



    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    </configuration>

    در میان تگ شروع و پایان configuration یک تگ جدید به نام system.net را اضافه می کنیم که جمعا 5 سطر جدید خواهد بود :

    <system.net>
    <settings>
    <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
    </system.net>


    مثلا :

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <system.net>
    <settings>
    <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
    </system.net>
    </configuration>



    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.net>
    <settings>
    <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
    </system.net>
    </configuration>

    • به متد GetPage دو سطر کد اضافه کنید. یک سطر مربوط به SecurityProtocol و یک سطر مربوط به Credentials


    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;
    client.Credentials = CredentialCache.DefaultCredentials;

    اون دو سطر در این موقعیت ها اضافه می شوند، اولی درست قبل از using و دومی درست بعد از using :

    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    if (url.StartsWith("local://", StringComparison.Ordinal))
    {
    return Encoding.UTF8.GetBytes(File.ReadAllText(url.Substr ing(8)));
    }
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;
    using (var client = new WebClient())
    {
    client.Credentials = CredentialCache.DefaultCredentials;
    client.Headers[HttpRequestHeader.Authorization] = _authHeader;
    .
    .
    .
    سلام
    مواردی رو که گفتین دقیقا اعمال کردم ولی متاسفانه کوچگترین تغییری نکرد
    همون خطای قبلی رو میده


    این نرم افزاری که زحمت کشیدین و نوشتین روی سیستم خودتون خطا میده ؟

  11. #11

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط aidin2345 مشاهده تاپیک
    سلام
    مواردی رو که گفتین دقیقا اعمال کردم ولی متاسفانه کوچگترین تغییری نکرد
    همون خطای قبلی رو میده


    این نرم افزاری که زحمت کشیدین و نوشتین روی سیستم خودتون خطا میده ؟
    امکان بررسی متد GetPage و دریافت از سرویس تحت وب رو ندارم، چون من به پنل پیامک مورد نظر شما دسترسی نداشتم.
    برای همین خودم برای امتحان از فایل بصورت local اطلاعات json رو دریافت کردم، نه از سرویس وب.
    صرفا بر اساس پیام خطایی که نشون دادید راه حل های متعارفی که در اینترنت هست رو ذکر کردم.

  12. #12

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    امکان بررسی متد GetPage و دریافت از سرویس تحت وب رو ندارم، چون من به پنل پیامک مورد نظر شما دسترسی نداشتم.
    برای همین خودم برای امتحان از فایل بصورت local اطلاعات json رو دریافت کردم، نه از سرویس وب.
    صرفا بر اساس پیام خطایی که نشون دادید راه حل های متعارفی که در اینترنت هست رو ذکر کردم.
    آقا ، یه زحمت بدم و لینک و یوزر و پس رو بدم
    میشه یه وقت بذارین و چک کنین ؟؟؟

  13. #13

    نقل قول: نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟

    برای رفع خطای SSL TLS یک تغییر مختصر در کد GetPage دادم :

    using System.Security.Cryptography.X509Certificates;
    .
    .
    .
    private byte[] GetPage(string phoneNumber, string url, DateTime startDate, DateTime endDate, int page)
    {
    if (url.StartsWith("local://", StringComparison.Ordinal))
    {
    return Encoding.UTF8.GetBytes (File.ReadAllText(url.Substring(8)));
    }
    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 | (SecurityProtocolType)768 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;
    ServicePointManager.Expect100Continue = true;
    ServicePointManager. ServerCertificateValidationCallback = ServerCertificateValidation;
    using (var client = new WebClient())
    {
    client.Headers [HttpRequestHeader.Authorization] = _authHeader;
    client.Credentials = CredentialCache.DefaultCredentials;
    var values = new NameValueCollection
    {
    ["PhoneNumber"] = phoneNumber,
    ["StartDate"] = GetUnixTimestamp(startDate).ToString(),
    ["EndDate"] = GetUnixTimestamp(endDate).ToString(),
    ["Page"] = page.ToString()
    };
    return client.UploadValues(url, values);
    }
    }

    private bool ServerCertificateValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
    return true;
    }

تاپیک های مشابه

  1. نحوه استفاده از یه وب سرویس ارسال پیامک ؟؟
    نوشته شده توسط aidin2345 در بخش VB.NET
    پاسخ: 0
    آخرین پست: جمعه 08 فروردین 1399, 19:44 عصر
  2. پاسخ: 3
    آخرین پست: سه شنبه 19 فروردین 1393, 15:58 عصر
  3. گفتگو: چه لپتاپی برای یه برنامه نویس PHP پیشنهاد میکنند؟؟
    نوشته شده توسط lordofphp در بخش PHP
    پاسخ: 4
    آخرین پست: دوشنبه 28 بهمن 1392, 21:08 عصر
  4. سوال: لزوم نصب IIS در استفاده از وب سرویس ؟؟ فوری
    نوشته شده توسط Tintirio در بخش Silverlight
    پاسخ: 19
    آخرین پست: چهارشنبه 27 مهر 1390, 01:51 صبح
  5. سوال: مشکل با استقاده از وب سرویس ؟؟
    نوشته شده توسط Tintirio در بخش Silverlight
    پاسخ: 2
    آخرین پست: پنج شنبه 06 مرداد 1390, 11:35 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •