locked
クライアント アプリケーションからWebサービスを利用した検索について RRS feed

  • 質問

  • http://msdn.microsoft.com/ja-jp/library/ms497054%28v=office.12%29.aspx

    http://msdn.microsoft.com/ja-jp/library/ms774561%28v=office.12%29.aspx

    に記載されている、MOSSに対して、クエリ Web サービスの QueryEx 利用した検索について

    プロジェクトへ、Web参照を追加しspsearch.asmxを読込んで、

    C#コードサンプルコードを元に、VB.NETのフォームアプリケーションにて以下のコードを実装してみたのですが

    サイトやライブラリを自由に指定して検索の方法や、NTML認証時や、フォーム認証時はどのように実行すればよいのか?

    MSDNの資料を見てもいまいちよく分からず、困っております。

    public Sub test()
        Try
            Dim queryXml As String = "sample"
            ' Instantiate the Web service.
            Dim qs As New QueryService
            ' Use the credentials of the user running the client application.
            qs.Credentials = System.Net.CredentialCache.DefaultCredentials
            ' Execute the QueryEx method, returning the results to a DataSet
            Dim qr As DataSet = qs.QueryEx(GetXMLString_KeyWord(queryXml))
        Catch ex As Exception
        End Try
    End Sub

    Private Function GetXMLString_KeyWord(ByVal queryText As String)
        Dim xmlString As Text.StringBuilder = New Text.StringBuilder()
        xmlString.Append("<QueryPacket xmlns='urn:Microsoft.Search.Query'><Query><SupportedFormats>" & _
                         "<Format revision='1'> urn:Microsoft.Search.Response.Document:Document </Format>" & _
                         "</SupportedFormats><Context><QueryText language='en-US' type='STRING'>")
        xmlString.Append(queryText)
        xmlString.Append("</QueryText></Context></Query></QueryPacket>")
        Return xmlString.ToString()
    End Function

     

    作成・勉強を行う上で、参考になるようなホームページはドキュメント等をご存じの方がいらっしゃればご教授願えないでしょうか?

    よろしくお願い致します。

     

    2010年12月27日 5:43

回答

  • こんばんは、

    通常は、
    「qs.Credentials = System.Net.CredentialCache.DefaultCredentials」
    の部分を書き換えて認証関連の設定をします。上記のコードでは、コードを実行しているWindowsユーザーの権限を使用します。

    その為、上記の設定であればWindows認証にのみ対応します。(NTLM含む)
    上記のコードは実行中のユーザー権限を取得してますが、qs.Credentialsに「NetworkCredentialクラス 」を設定することで別のユーザーでWebサービスへアクセスできます。

     

    フォーム認証であれば、試したことはありませんが、下記の情報を元に検証すれば実装可能だと予想します。
    (ちゃんと調べてないですが、多分できるだろうなぁと思います。)

    ■フォーム認証により保護されたサイトで Web サービスを使用する
    http://msdn.microsoft.com/ja-jp/library/bb975135%28office.12%29.aspx#MOSSFBAPart2_UsingWebServices

     


    Blog:http://blog.sharepointissue.com HP:http://www.piecepoint.jp/
    • 回答としてマーク AKINORI_HG 2011年1月5日 7:17
    2011年1月4日 14:41

すべての返信

  • こんばんは、

    通常は、
    「qs.Credentials = System.Net.CredentialCache.DefaultCredentials」
    の部分を書き換えて認証関連の設定をします。上記のコードでは、コードを実行しているWindowsユーザーの権限を使用します。

    その為、上記の設定であればWindows認証にのみ対応します。(NTLM含む)
    上記のコードは実行中のユーザー権限を取得してますが、qs.Credentialsに「NetworkCredentialクラス 」を設定することで別のユーザーでWebサービスへアクセスできます。

     

    フォーム認証であれば、試したことはありませんが、下記の情報を元に検証すれば実装可能だと予想します。
    (ちゃんと調べてないですが、多分できるだろうなぁと思います。)

    ■フォーム認証により保護されたサイトで Web サービスを使用する
    http://msdn.microsoft.com/ja-jp/library/bb975135%28office.12%29.aspx#MOSSFBAPart2_UsingWebServices

     


    Blog:http://blog.sharepointissue.com HP:http://www.piecepoint.jp/
    • 回答としてマーク AKINORI_HG 2011年1月5日 7:17
    2011年1月4日 14:41
  • 返答ありがとうございます。

    無事、NTLMでの動作は確認する事が出来ました。

     

    現在は次の段階で、MossSrchWs(http://mosssrchws.codeplex.com/)を使用しながら、

    QueryExにセットするSQL構文の作成に四苦八苦している最中です。

     

     

     

    2011年1月5日 7:21