2017-05-14 4 views
0

Ich habe nach diesem Problem gesucht, aber nicht mit meinem Fall identisch war.C# WebAPI - Abrufen der URL mit Parametern als QueryString

Ich habe folgende Controller:

public HttpResponseMessage GetMyService(int aType, [FromUri] string streamURL) 

STREAMURL ist ein Parameter, der eine vollständige URL vom Client gesendet wird.

Der Kunde ruft den Service wie folgt aus: http://www.myservice.com/.../GetMyService/?aType=1&streamURL=http://www.client.com/?p1=100&p2=200

Das Problem ist, dass bei dann enden, erhalte ich die [FromUri] string STREAMURL Parameter als http://www.client.com/? p1 = 100 ohne die & p2 = 200

Dies bekannt ist und vernünftig, aber ich kann keine Codierung/Decodierung Funktionalität platzieren, wie die URL am Anfang geschnitten wird.

Jede mögliche Hilfe geschätzt ..

THX

+0

Der Client sollte die URL verschlüsseln, bevor sie an Ihren Dienst gesendet wird, wo sie dann entschlüsselt und entsprechend verwendet werden kann. Ich glaube nicht, dass Ihr Dienst viel leisten kann, da er nicht den Unterschied zwischen einem neuen Querystring-Parameter und der Fortsetzung der vom Client gesendeten URL erkennen kann. – James

+0

Der 'streamURL'-Wert muss vom aufrufenden Client mit URL-Codierung versehen werden. – Nkosi

+0

Wie stellt der Client die Anforderung? Was ist der Kunde? Stellen Sie eine [mcve] zur Verfügung, mit der das Problem reproduziert werden kann. – Nkosi

Antwort

3

Der Kunde sollte richtig URL encode der Wert der streamURL Query-String-Parameter, wenn die Anforderung, um die HTTP-Protokoll-Spezifikation entspricht zu machen:

http://www.myservice.com/.../GetMyService/?aType=1&streamURL=http%3A%2F%2Fwww.client.com%2F%3Fp1%3D100%26p2%3D200 

Also im Grunde gibt es nichts, was Sie auf der Serverseite tun könnten, sollten Sie den Client reparieren.

Verwandte Themen