package Htttp;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
public class HttpUtils_touxiang {
public HttpUtils_touxiang() {
}
public static Touxiang getJsonContent(String url_path){
try {
URL url = new URL(url_path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(3000);
connection.setRequestMethod("GET");
connection.setDoInput(true);
int code = connection.getResponseCode();
if(code ==200){
return changeInputStream(connection.getInputStream());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
private static Touxiang changeInputStream(InputStream inputStream) {
// TODO Auto-generated method stub
String jsonString = "";
String nickname = null;
String headimgurl =null;
Touxiang touxiang = null;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int len = 0;
byte[] data = new byte[1024];
try {
while((len = inputStream.read(data))!=-1){
outputStream.write(data,0,len);
}
jsonString = new String(outputStream.toByteArray());
//到这里已经是乱码了
System.out.println("先前返回的是:"+jsonString);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONObject jsonObject;
try {
jsonObject = new JSONObject(jsonString);
System.out.println("返回的是:"+jsonObject);
nickname = jsonObject.getString("nickname").toString();
headimgurl = jsonObject.getString("headimgurl");
touxiang = new Touxiang();
touxiang.setHeadimgurl(headimgurl);
touxiang.setNickname(nickname);
System.out.println("你的昵称是:"+nickname);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return touxiang;
}
}
jsonString = new String(outputStream.toByteArray());
//到这里已经是乱码了
System.out.println("先前返回的是:"+jsonString);
改成
jsonString = new String(outputStream.toByteArray(),"UTF-8");//微信接口是UTF-8格式的。
//到这里已经是乱码了
System.out.println("先前返回的是:"+jsonString);
在你请求的时候指定一下编码 “utf-8”试试
你可以试试获取信息时,设置一下文件内容的编码格式,例如:UTF-8、GB2312
你收到数据后,用utf8解码。当然还可能是其他解码方式,具体要看官方的说明文档
jsonString = new String(outputStream.toByteArray(),"GB2312");
三楼的代码试试。就是从响应流Inputstream读取数据时设置编码方式。
另一种方式的等效示例代码:
private static Touxiang changeInputStream(InputStream inputStream) {
// TODO Auto-generated method stub
String jsonString = "";
String nickname = null;
String headimgurl =null;
Touxiang touxiang = null;
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
try {
inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
jsonString = buffer.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
....后面的代码
}