اتصال برنامه ویندوز فرم به وب سرویس PHP
سلام
یه وب سرویس با زبان php نوشتم و می خوام تو یه برنامه ویندوز فرم این وب سرویسو add کنم. حالا مشکل اینجاست که وقتی توی صفحه ی add web reference آدرس url این وب سرویسو می دم میگه :
The HTML document does not contain Web service discovery information.
توی صفحه زیر url که قراره توابع وب سرویسو نشون بده هم اینو می نویسه :
This service does not provide WSDL
من از این وب سرویس توی هاست استفاده کردم و جواب داده اما توی ویدوز فرم نمی تونم استفاده کنم. مشکل از کجاست؟
کد وب سرویس :
<?php
require_once "nusoap.php";
function jamesh($a, $b) {
return $a + $b;
}
$server = new soap_server();
$server->register("jamesh");
$server->service($HTTP_RAW_POST_DATA);
?>
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
باید از : WebResponse و WebRequest استفاده کنی ... !!!!
UnicodeEncoding encoding = new UnicodeEncoding();
//فیلد هارو به صورت کوئری استرینگ بفرست و در وب سرویس به صورت کوئری استرینگ بخون
string postData = "";//"login=1&user=123&pass=456";
byte[] data = encoding.GetBytes(postData);
//با وب رکوئست درخواست انجام عملیات رو میدم
WebRequest request = WebRequest.Create("http://Mysite.com/support.php?name=" + txtSuportName.Text + "&subject=" + txtSuportTitle.Text + "&email=" + txtSuportEmail.Text + "&text=" + txtSuportText.Text + "&user=" + textBoxX4.Text + "&pass=" + textBoxX6.Text);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
//با وب ریسپانس نتیجه رو دریافت میکنم
WebResponse response = request.GetResponse();
stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
if (sr.ReadToEnd() == "1")
{
buttonX16.Enabled = false;
MessageBox.Show("عملیات با موفقیت انجام شد", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("عملیات با خطا مواجه شد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
sr.Close();
stream.Close();
1 ضمیمه
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
نقل قول:
نوشته شده توسط
CsharpNevisi
باید از : WebResponse و WebRequest استفاده کنی ... !!!!
UnicodeEncoding encoding = new UnicodeEncoding();
//فیلد هارو به صورت کوئری استرینگ بفرست و در وب سرویس به صورت کوئری استرینگ بخون
string postData = "";//"login=1&user=123&pass=456";
byte[] data = encoding.GetBytes(postData);
//با وب رکوئست درخواست انجام عملیات رو میدم
WebRequest request = WebRequest.Create("http://Mysite.com/support.php?name=" + txtSuportName.Text + "&subject=" + txtSuportTitle.Text + "&email=" + txtSuportEmail.Text + "&text=" + txtSuportText.Text + "&user=" + textBoxX4.Text + "&pass=" + textBoxX6.Text);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
//با وب ریسپانس نتیجه رو دریافت میکنم
WebResponse response = request.GetResponse();
stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
if (sr.ReadToEnd() == "1")
{
buttonX16.Enabled = false;
MessageBox.Show("عملیات با موفقیت انجام شد", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("عملیات با خطا مواجه شد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
sr.Close();
stream.Close();
ممنون از راهنمایی تون اما فکر کنم نتونستم درست از کدی که دادین استفاده کنم.
ضمیمه 120094
یه سوال دیگه با این روش من چه جوری می تونم از بین مثلا ۶ یا ۷ تا تابعی که توی فایل php قرار دادم یکیش رو انتخاب کنم و بهش مقدار بدم.
راهی نداره که مثل وبسرویسی که با asp نوشته می شه و به پروژه add می شه اینم همین جوری add کنیم و از توابعش استفاده کنیم؟
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
از سمت وب سرویس پاسخی دریافت نکرده ... !!!!
شما باید از سمت پی.اچ.پی یه جوابی بفرستید که تو این کد موفقیت با عدد 1 و عدم موفقیت با عدد 0 معین میشود ... !!!!
نقل قول:
راهی نداره که مثل وبسرویسی که با asp نوشته می شه و به پروژه add می شه اینم همین جوری add کنیم و از توابعش استفاده کنیم؟
اطلاعی ندارم ... !!!!
من تو یکی از پروژه هام از این روش استفاده کردم ... !!!!
البته بگم با https کار نمیکنه ... !!!!
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
از webclient استفاده کن
<?php
$yas = $_POST['yas'];
if ($yas < 40)
{
echo "genc";
}
else
{
echo "yasli";
}
?>
void Button1Click(object sender, EventArgs e)
{
System.Net.WebClient w = new System.Net.WebClient ();
System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection ();
reqparm.Add("yas",textBox1.Text );
byte[] b = w.UploadValues("http://localhost/Ali/post.php","POST",reqparm );
string s = System.Text.Encoding.UTF8.GetString(b);
MessageBox.Show(s);
}
http://ararz-soft.persiangig.com/post/post.JPG
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
نقل قول:
نوشته شده توسط
CsharpNevisi
از سمت وب سرویس پاسخی دریافت نکرده ... !!!!
خوب آخه چرا جواب نگرفته. با یه فایل php از روی هاست که ازش جواب می گیرم. چرا کدی که نوشتم جواب نمیده؟
روشی که من برای ارسال اعداد ۱ و ۲ به آرگومان تابع استفاده کردم درست بوده؟
نقل قول:
نوشته شده توسط
CsharpNevisi
شما باید از سمت پی.اچ.پی یه جوابی بفرستید که تو این کد موفقیت با عدد 1 و عدم موفقیت با عدد 0 معین میشود ... !!!!
فکر نمی کنم توی این کد مشکل من عدد دریافتی ۱ یا ۰ باشه.
2 ضمیمه
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
نقل قول:
نوشته شده توسط
shahryari
از webclient استفاده کن
ممنون از راهنماییتون
با روش شما ۲ عدد فرستادم و مجموعش رو دریافت کردم.
اما چطور می تونم یه جدول از دیتابیسو به دیتا گریدویو بدم؟
یعنی من یه دستور SELECT رو با php انجام دادم و یه جدول گرفتم. اطلاعات رو توی یه جدول با html توی صفحه چاپ کردم. اما وقتی اون اطلاعات رو با کد شما توی مسیج باکس می خونم همشو با تگهای html نشون میده که منطقی هم هست.
ضمیمه 120106ضمیمه 120107
اما چطور این اطلاعات رو به دیتاگریدویو بدم؟
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
راهی که خودم استفاده میکنم (برای هاست های رایگان لینوکسی که دسترسی ریموت به mysql رو نمیدن ) به این شرحه:
در داخلی یک فایل php ابتدا به بانک متصل میشم و جدول و میخونم و با حلقه وایل دونه دونه فیلد هارو میخونم و هر فیلد رو با کار کتر خاصی از هم جدا کرده و در یک متغیر ذخیره میکنم
و همچنین ردیف ها رو هم با یک کاراکتر خاص دیگه از هم جدا میکنم و در خروجی چاپ میکنم
سپس میام سمت سی شارپ و از هم اسپلیت میکنم و در دیتا گرید میریزم
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
نقل قول:
نوشته شده توسط
shahryari
راهی که خودم استفاده میکنم (برای هاست های رایگان لینوکسی که دسترسی ریموت به mysql رو نمیدن ) به این شرحه:
در داخلی یک فایل php ابتدا به بانک متصل میشم و جدول و میخونم و با حلقه وایل دونه دونه فیلد هارو میخونم و هر فیلد رو با کار کتر خاصی از هم جدا کرده و در یک متغیر ذخیره میکنم
و همچنین ردیف ها رو هم با یک کاراکتر خاص دیگه از هم جدا میکنم و در خروجی چاپ میکنم
سپس میام سمت سی شارپ و از هم اسپلیت میکنم و در دیتا گرید میریزم
یعنی هر چی اطلاعات بخوام از سرور بگیرم باید به صورت text بگیرم؟
راستی این روشی که استفاده می کنم که وب سرویس نمی شه؟می شه؟
کسی تابعی میشناسه که بتونم اطلاعات یه جدول رو راحت به دیتاگرید بدم؟
نقل قول: اتصال برنامه ویندوز فرم به وب سرویس PHP
از دوستان کسی راهی رو میشناسه که بشه از طریق webclient اطلاعات رو از دیتابیس یه mysql گرفت و به دیتاگریددیو داد؟
یعنی اینجوری mysql=>php=>C# application