2017-06-06 35 views
1

我有通過的PowerShell連接到服務,與使用C#中的問題,是該服務預計在頭中傳遞的關鍵。如何使用System.Net.WebClient,如PowerShell New-WebServiceProxy?

我可以使用new-WebServiceProxy與URI,並把它傳遞默認憑據。然後,我可以得到限時服務的關鍵,但對於後續調用的服務,有沒有辦法通過的關鍵,這將導致一個錯誤,沒有有效的服務密鑰。

我知道cmdlet使用System.Net.WebClient類和有,我想用嘗試可設置標題屬性。我似乎無法讓該類以與cmdlet相同的方式運行並返回對象。有誰知道如何?

這是我使用但如何在.net直接從PowerShell的實現:

$QMSService = New-WebServiceProxy -Uri http://localhost:4799/QMS/Service -Namespace QlikViewServer -UseDefaultCredential 

這是PowerShell命令我用它來訪問服務。我想利用來完成相同的:

$Client = New-Object System.Net.WebClient 
$Client.UseDefaultCredentials = $true 
$Client.BaseAddress = "http://localhost:4799/QMS/Service" 

我只是無法弄清楚如何創建一個代理對象,讓我訪問所有服務提供成員,使用System.Net.WebClient。一旦我設置,我可以抓住TimeLimitedServiceKey並執行此操作:

$ServiceKey = $ProxyObjectCreatedFromClient.GetTimeLimitedServiceKey() 
$Client.Headers = "X-Service-Key", $ServiceKey 

如果有人可以請幫助我瞭解如何創建代理對象。

回答

0

看來,GetTimeLimitedServiceKey()方法是從QMSClient API:https://help.qlik.com/en-US/qlikview-developer/12.1/apis/QMS%20API/html/2be1e405-a7e5-4a43-b1b6-9540b23a6226.htm

...的意思,你就需要引用第三方API直接(新對象,添加型,添加型W/p /調用等),然後撥打電話到GetTimeLimitedServiceKey()

$service = New-WebServiceProxy -Uri http://someHost:4799/QMS/Service -Namespace QlikViewServer -Credential (get-credential) 
$serviceKey = $service.GetTimeLimitedServiceKey() 

https://community.qlik.com/thread/143003

+0

它是一個Web服務,那麼使用新webserviceproxy創建代理對象只是保持一個打開的連接服務本身,但生成一個供我使用的對象,讓我可以訪問所述服務的方法。我可以通過該對象獲取密鑰,但是,該cmdlet不允許我將標題信息注入到對URI的調用中。 .net等價物,但我無法弄清楚我的生活,如何生成一個代理對象,使我可以訪問PS cmdlet所執行的方法。 – user3377627

+0

是不是$ QMSService只是入口點?你有沒有試過$ QMSService |通用汽車?查看哪些屬性/方法可用? – thepip3r

+0

我只是想弄清楚,我怎樣才能得到一個代理對象,就像什麼新webserviceproxy回報,但使用system.net.webclient。我試着對從system.net.webclient返回的對象做一個gm,但是我沒有看到任何返回這樣一個對象的方法。 – user3377627