开发时遇到个问题,程序访问数据库数据,给服务器发送请求时,老是报错,返回的错误页面是:
HTTP Status 415 - Unsupported Media Type type Status report message Unsupported Media Type description The server refused this request because the request entity is in a format not supported by the requested resource for the requested method (Unsupported Media Type).
在 百度了各位大神的意见,说法各异,但是都解决不了问题。在一个论坛里终于找到了这个问题的实质:错误提示不支持的媒介类型,原因是XML文件的编码格式与 服务器的编码格式不一致,所以导致出错。屁颠屁颠跑去问管理服务器的那个宅男大叔,然后说是UTF-8。我瞬间雷到了,因此自己的表头文件格式就是 UTF-8啊。
<?xml version="1.0" encoding="UTF-8"?>
好吧 ,然后自己又去手动设置请求中的头部,这下XML的编码格式就应该没错了吧。
Dim AppDatbus As New MSXML2.XMLHTTP AppDatbus.setRequestHeader("CONTENT-TYPE", "text/xml")
后来发现还是没用,求助微软大神以后,找到一份看起来好像很吊的文章,虽然看不懂,但是还是拿出来跟大家分享下,觉得自己或是大家以后也许用得上:
如何通过使用 XMLHTTP 或 ServerXMLHTTP 对象提交窗体数据
当自己手足无措的时候,数据库大叔来了句,我帮你看看,依旧改了请求头部,只是改成了
Dim AppDatbus As New MSXML2.XMLHTTP AppDatbus.setRequestHeader("CONTENT-TYPE", "application/xml")
自 己查找资料发现:"application/xml" 和 "text/xml"两种类型, 二者功能一模一样,唯一的区别就是编码格式,text/xml忽略xml头所指定编码格式而默认采用us-ascii编码,而application /xml会根据xml头指定的编码格式来编码:
具体的文章网址如下,有兴趣深究可以看下:application/xml and text/xml的区别