修改答案。
所以我测试了几件事,显然没有其他工作,然后urlConnection.getContenttype。我添加了一个我创建的示例。 Cart.java
package com.plumtestongo.sample;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.webkit.MimeTypeMap;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Cart extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new background().execute();
}
private class background extends AsyncTask<Void,Void,String>{
@Override
protected String doInBackground(Void... params) {
String mime1;
String mime2;
String mime3;
String mime4;
boolean hasMime;
Uri uri = Uri.parse("http://192.168.0.6:3000/jo.json").buildUpon().build();
try {
URL url = new URL(uri.toString());
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
mime1 = URLConnection.guessContentTypeFromName("jo.json");
mime2 = urlConnection.getContentType();
mime3 = URLConnection.guessContentTypeFromStream(urlConnection.getInputStream());
mime4 = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(url.toString()));
hasMime = MimeTypeMap.getSingleton().hasMimeType("application/json");
Log.i(Cart.this.getClass().getName(),"Have extension we are looking for:"+hasMime);
Log.i(Cart.this.getClass().getName(),"From Name: Correct mime type is:"+mime1);
Log.i(Cart.this.getClass().getName(),"From Content type: Correct mime type is:"+mime2);
Log.i(Cart.this.getClass().getName(),"From Input stream type: Correct mime type is:"+mime3);
Log.i(Cart.this.getClass().getName(),"From Extension type: Correct mime type is:"+mime4);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
}
我我的本地机器上托管的node.js Web服务器(express.js)。 app.js
var express = require('express');
var app = express();
const port = 3000;
app.get('/', function (req, res) {
res.send('hello world')
});
var stat = express.static('./public');
app.use(stat);
app.listen(port, function() {
console.log('magic happening at:' + port);
});
在主目录我有一个包含一个JSON文件(jo.json),并请在服务器发送该文件中的公用文件夹。 jo.json
{
name: "inder"
, age: 24
}
和日志猫:
06-21 11:25:38.581 6441-6493/com.plumtestongo.sample I/com.plumtestongo.sample.Cart: Have extension we are looking for:false
06-21 11:25:38.581 6441-6493/com.plumtestongo.sample I/com.plumtestongo.sample.Cart: From Name: Correct mime type is:null
06-21 11:25:38.581 6441-6493/com.plumtestongo.sample I/com.plumtestongo.sample.Cart: From Content type: Correct mime type is:application/json
06-21 11:25:38.581 6441-6493/com.plumtestongo.sample I/com.plumtestongo.sample.Cart: From Input stream type: Correct mime type is:null
06-21 11:25:38.581 6441-6493/com.plumtestongo.sample I/com.plumtestongo.sample.Cart: From Extension type: Correct mime type is:null
使用urlConnection.getContenttype这是唯一的方法工作。谢谢
如果在问题中提到的方法中发生确切的字符串比较,那么这更准确吗? – droidev
https://developer.android.com/reference/java/net/URLConnection.html#guessContentTypeFromStream(java.io.InputStream) 由于文档统计一些http服务器可以返回错误类型。它可以是更好的方法来得到我的从字节键入。 –
这很有道理 – droidev