Заставка

Программирование на старых и современных языках, а так-же дизайн

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование на старых и современных языках, а так-же дизайн » C# » Веб службы NuSOAP (устаревший метод), C# net 3.5


Веб службы NuSOAP (устаревший метод), C# net 3.5

Сообщений 1 страница 2 из 2

1

Когда делал портал по недвижимости, и использовал NuSOAP + NET. Простой пример:
Так выглядет WSDL:
https://i.ibb.co/qChvnHz/nusoap-00-00-38-31-07-2021-min.jpg

1. Итак создадим проект:
https://i.ibb.co/N6kPCD2/nusoap-01-00-48-31-07-2021-min.jpg

2. Напишим код на PHP index.php:

Код:
<?php
require_once('./lib/nusoap.php');
$str_URL = "http://localhost/nusoap/index.php";
$str_namespace = $str_URL . '?wsdl';

$obj_server = new soap_server();
$obj_server->soap_defencoding = 'utf-8';
$obj_server->decode_utf8 = false;
$obj_server->encode_utf8 = true;
$obj_server->configureWSDL('books', $str_namespace);
$obj_server->register('get_data', array(),
                  array('return'=>'xsd:string'));

function get_data() {
  $arr_data = array(
    array('id'=>'1', 'isbn'=>'aaa', 'author'=>'bbb', 'year'=>'2020'),
    array('id'=>'2', 'isbn'=>'bbb', 'author'=>'ccc', 'year'=>'2020')
  );
  $obj_xml = new DOMDocument('1.0', 'utf-8');
  $obj_xml_item = $obj_xml->createElement('items');
  foreach($arr_data as $arr_d) {
    $obj_xml_subitem = $obj_xml->createElement('item');
    foreach($arr_d as $k => $v) 
      $obj_xml_subitem->setAttribute($k, $v);

    $obj_xml_item->appendChild($obj_xml_subitem);
  }
  $obj_xml->appendChild($obj_xml_item);

  return $obj_xml->saveXML();
}

$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) 
                ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';

$obj_server->service($POST_DATA);
?>

3. Запустим XAMPP, и добавим службу в наш проект:
https://i.ibb.co/wzL779m/nusoap-02-00-50-31-07-2021-min.jpg

4. Введём URI путь к веб службе:
https://i.ibb.co/6mV8z2M/nusoap-03-00-52-31-07-2021-min.jpg

Вот наш метод get_data:
https://i.ibb.co/7W2RRXh/nusoap-04-00-52-31-07-2021-min.jpg

https://i.ibb.co/94sV7DZ/nusoap-05-00-53-31-07-2021-min.jpg

5. Напишим код на C# Form1.cs:

Код:
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void bnCallWSDL_Click(object sender, EventArgs e)
        {
            try
            {
                ServiceReference1.booksPortTypeClient bc = new ServiceReference1.booksPortTypeClient(); // NuSOAP
                String data = bc.get_data(); // Возвращает XML
                MessageBox.Show(data); // Показываем Alert
                DataSet ds = new DataSet(); 
                DataTable dt = new DataTable("tb1");
                dt.Columns.Add("id");
                dt.Columns.Add("isbn");
                dt.Columns.Add("author");
                dt.Columns.Add("year");
                ds.Tables.Add(dt);

                StringReader sr = new StringReader(data);
                ds.ReadXml(sr, XmlReadMode.ReadSchema);
                this.dataGridView1.DataSource = ds.Tables[0];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
       }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

Вуаля! Результат работы:
https://i.ibb.co/BzYFtdz/nusoap-06-05-51-31-07-2021-min.jpg

P.S. Замечу, если не написать такой код, в PHP:

Код:
$obj_server->soap_defencoding = 'utf-8';
$obj_server->decode_utf8 = false;
$obj_server->encode_utf8 = true;

Приложение даст сбой:
https://i.ibb.co/FXwy7HB/nusoap-07-06-01-31-07-2021-min.jpg

0

2

Вечером поправлю код

0


Вы здесь » Программирование на старых и современных языках, а так-же дизайн » C# » Веб службы NuSOAP (устаревший метод), C# net 3.5