是否有Javascript或php可以用来告诉我链接的类型?(xml或html)
我有一个网页,生成链接。有时这些链接是工作的WSDL(XML类型),有时它只是显示一个是否有Javascript或php可以用来告诉我链接的类型?(xml或html),javascript,php,html,xml,wsdl,Javascript,Php,Html,Xml,Wsdl,我有一个网页,生成链接。有时这些链接是工作的WSDL(XML类型),有时它只是显示一个此WSDL是无效的WSDL 在它打开之前,我是否可以知道该链接是XML(工作wsdl)还是HTML(无效wsdl)?如果该链接是字符串,您应该能够使用: if (strpos($link, 'https:/') == false) { isHTTP = true; } else{isXML = true;} 我假设无效的XML是一个警告/错误(在HTML中),因为请求的URL无法按预期提供。 在web
此WSDL是无效的WSDL
在它打开之前,我是否可以知道该链接是XML(工作wsdl)还是HTML(无效wsdl)?如果该链接是字符串,您应该能够使用:
if (strpos($link, 'https:/') == false) {
isHTTP = true;
}
else{isXML = true;}
我假设无效的XML是一个警告/错误(在HTML中),因为请求的URL无法按预期提供。
在web上的所有页面上,不仅提供(可见)数据(HTML、XML等),而且还提供。其中一个标题是:我们都见过著名的404,但当一切正常时,服务器会给出状态200。
如果要将URL的内容加载到PHP中的变量,还可以确定状态代码,例如:
//加载url:
$dataFromURL=文件获取内容($url);
//循环所有响应头并查找状态代码:
foreach($http\u response\u头作为$header)
{
//将状态代码存储到$code变量中:
sscanf($header,'HTTP/%*d.%*d%d',$code);
}
如果($code==200)
{
//一切都好,照常做
}
其他的
{
//例外,做点别的
}
您可以在JavaScript中执行类似的操作(我使用jQuery使其更简单):
$.ajax({
成功:函数(数据、文本状态、xhr)
{
$('body').append($('').text(xhr.status));
},
完成:功能(xhr、textStatus)
{
$('body').append($('').text(xhr.status));
}
});
如果,不知何故,服务器总是给您状态200,那么您可以转而查找。这将告诉您是否正在提供text/html
或text/xml
。
(在php中使用sscanf($header,'Content Type:%[^]]”,$mime)
,或者在jQuery中使用xhr.getResponseHeader('Content-Type')
而不是xhr.status
)。记住;这仍然是服务器告诉您的期望,它可能在“欺骗”您
如果所有这些都不适用于您,您可能希望将HTML(
)解析为XML,查看根元素并检查节点是否为h
或您实际要查找的对象。是否可以添加问题的详细信息?如果有疑问,read您是否检查了正在加载的链接是否为无效的WSDL返回了不同的http状态代码?这可能比检查数据更容易…@BillyNate你能详细说明一下这个问题吗?我不太知道如何检查状态代码。可以找到详细说明作为答案。如果这回答了你的问题。嗨。谢谢你的回复。这将不起作用,因为生成的所有链接都以Https:/开头。然而,我注意到,当我打开一个有效链接并右键单击页面时,它会自动保存为XML文件。当我试图保存为无效页面时,它会保存为.html文件。因此,我必须做一些事情来区分它们。当您右键单击页面并选择“另存为”时,botton上有一个下拉表,允许您仅另存为httml。打印帮助指南:你能举一个链接的例子吗?
$.ajax({
success: function(data, textStatus, xhr)
{
$('body').append($('<p>').text(xhr.status));
},
complete: function(xhr, textStatus)
{
$('body').append($('<p>').text(xhr.status));
}
});