我正在开发一个Web应用程序,它需要在客户端计算机上调用一个自定义的注册协议 。 目前我做了一个GET协议,然后通过查询string传递参数。
是否有可能做一个POST自定义注册协议,如果是的话我将如何去提取CustomProtocol.exe中的头信息?
这是我目前的GET解决scheme
从JavaScript启动呼叫
Custom://startup?Function=DoSomething&Value1=Test&Value2=Test
我注册到我的机器上的自定义协议。
[HKEY_CLASSES_ROOT\Custom\shell\open\command] @="\"CustomProtocol.exe\" \"%1\""
然后编译下面的代码来生成CustomProtocol.exe。 在执行期间,URI被传递给Main方法,然后我提取查询string。
namespace CustomProtocol { class Program { static void Main(string[] args) { // Get the querystring from the URI being passed in // Business code... } } }
编辑1:
这是进行自定义注册协议后的标题。 该协议只有1个parameter passing给它,就像GET是URI。 不知何故,如果我只能够访问标题信息…
Request URL:http://localhost/CustomWebInvoker/Default.aspx Request Headersview source Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-Type:application/x-www-form-urlencoded Origin:http://localhost Referer:http://localhost/CustomWebInvoker/Default.aspx User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11 Form Dataview URL encoded __VIEWSTATE:/wEPDwUKMTkxMDU5NzI4OWRkBWZZppW219Muku6ZjiGZLQG5um8= __EVENTVALIDATION:/wEWCwKz9d77DAK57evuBgLk0vuTDALl+pjzDQKB8r3PAQKk+8X1CwLLneGNCgK2gO/LCAK355HvBAKAseegDAL+ovbYDMmmPuTHB0XbFjGRG9Wl1ij5kObV dlLanguage:English dlApplicationMode:UpdateMode dlCallingApplication:CSS dlCentre:EasternCompCenter btnFastPath:Fast Path
NO – 任何自定义的协议处理程序基本上是通过命令行获取其信息…没有办法将POST映射到命令行 …如果你真的需要这样做,我建议实施这个作为基于http的web服务(WCF ,SOAP / REST)…