2011-08-03 9 views
1

配列の配列/ギザギザの配列を返すWebサービスがあります。ウェブサービスからのハンドル配列

ローカルのC#windowsフォームアプリケーションで問題を処理しています。

初期設定では、コンテンツタイプエラーが発生していました。サンプルコードでは、空の配列を返しています。

また、1次元配列を返そうとしましたが、結果は同じです。

のWebServiceサイド:

[WebMethod] 
    public string[] teste() 
    { 
     string[] a = new string[1] { "one" }; 
     string[] b = new string[1] { "two" }; 
     string[][] c = { a, b }; 

     return c; 
    } 

ローカル側:

class open_notes 
{ 
    public static ServiceReference1.Smart_Stick_ServiceSoapClient web_service = new ServiceReference1.Smart_Stick_ServiceSoapClient(); 

    public static void open() 
    { 
     string[][] a = null; 
     a [0][0] = web_service.teste().ToString(); 
     MessageBox.Show(a[0][0]); 
    } 
} 

答えて

1

あなたのWebサービスがstring[][]の戻り値の型を持っていない、あなたは、Webサービス呼び出しの結果に.ToString()を呼ぶべきではない、とあなたはstring[][] a = nullを設定するときは、null参照にアクセスして、その後a[0][0]にインデックスにしてみてください。ただ、Webサービス呼び出しの結果に助けみんな

しかし、最終的に私は、Webサービスでの構造体を作成した方が良いと思い

ため

public static void open() 
{ 
    var a = web_service.teste(); 
} 
1

上)あなたの関数は、文字列の配列を返す(文字列の配列の配列ではなく)、あなたは(ToStringメソッドを呼び出しています結果の配列

-1

おかげで変数を設定します。

しかし、クライアント側で構造体を再度作成する代わりに、インスタンス化してWebサービスへの参照を作成する必要があることを忘れないでください。

サーバーサイド:

public struct ClientData 

{ 
    public string descricao; 
    public string timer; 
} 

[WebMethod] 
    public ClientData[] teste() 
    { 
     ClientData[] Clients = null; 
     Clients = new ClientData[30]; 

     Clients[0].descricao = "oi"; 
     Clients[0].timer = "legal"; 


     return Clients; 
    } 

クライアント側:

public static void receive_teste() 
    { 

     WindowsFormsApplication1.ServiceReference1.ClientData[] Clients = null; 
     Clients = new WindowsFormsApplication1.ServiceReference1.ClientData[30]; 

     Clients = (WindowsFormsApplication1.ServiceReference1.ClientData[])web_service.teste(); 

     MessageBox.Show(Clients[0].descricao.ToString()); // Shows returned "descricao" 
     MessageBox.Show(Clients[0].timer.ToString()); // Shows returned "timer" 

    } 
関連する問題