是否有Javascript或php可以用来告诉我链接的类型?(xml或html)

是否有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(XML类型),有时它只是显示一个
此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));
  }
});