Sto scrivendo un'applicazione C# che deve fare callout a una webapp. Sto cercando di utilizzare System.Uri
per combinare due URL: un URL di base e il percorso relativo al servizio specifico (o molti) dell'applicazione web di cui ho bisogno. Ho un membro della classe chiamato webappBackendURL
che voglio definire in un posto, con tutte le chiamate costruite da esso (webappBackendURL
non è definito il più vicino come illustrano i miei esempi).Come combinare gli URL con le parti della stringa di query preservate?
System.Uri webappBackendURL = new System.Uri("http://example.com/");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import
questo funziona, tuttavia, se webappBackendURL
contiene una stringa di query, non è conservato.
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import <-- (query string lost)
C'è un modo migliore di combinare gli URL? La libreria .NET è estesa, quindi penso che avrei potuto semplicemente trascurare un modo integrato per gestirlo. Idealmente, vorrei essere in grado di coniugare gli URL come questo:
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import?method=overwrite&runhooks=true");
// Result: http://example.com/rpc/import?authtoken=0x0x0&method=overwrite&runhooks=true
Ho colpito un 'UriFormatException' quando ho cercato di costruire un' Uri' dal mio percorso semplice, quindi non penso di poter usare in modo affidabile 'MergerUri'. Potrei provare a racchiudere il tuo suggerimento iniziale in un metodo. – jimp
Mi dispiace per non averlo provato prima. Quello aggiornato funzionerà ma è simile a quello che hai deciso. – jfin3204