关于Android使用HttpURLConnectionajax传输中文乱码码问题

帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:1&分页:数码宅男发信人: Evan (数码宅男), 信区: MobileDev
标&&题: [合集] androidHttpURLConnection换行符的问题?
发信站: 水木社区 (Fri Feb 24 15:15:36 2012), 站内 && ☆─────────────────────────────────────☆ &&
feifei5082 (Cary) 于
(Tue Feb 14 09:22:58 2012)
提到: && 用HttpURLConnection从服务器端读取内容回来,发现会发生乱码。
Reader reader = new InputStreamReader(conn.getInputStream(), "gb2312");
采用这种方式转成中文。因为返回回来字符串中包换\n这种换行符,直接把字符串放入
textView中,换行符会被当做普通字符处理直接在界面上显示\n出来。后来测试用
indexOf("\n")这个方法返回-1,说字符串中没有换行符,但是打印出来的字符明显是含有
的,大家有通到这种情况吗? &&&& ☆─────────────────────────────────────☆ &&
luma (上帝请我吃过饭,康神和我握过手) 于
(Tue Feb 14 11:21:03 2012)
提到: && 这个api有点不太靠谱, 在4.0上还有各种莫名其妙的问题, 还是用httpclient好些 && 【 在 feifei5082 (Cary) 的大作中提到: 】
: 用HttpURLConnection从服务器端读取内容回来,发现会发生乱码。
: Reader reader = new InputStreamReader(conn.getInputStream(), "gb2312");
: 采用这种方式转成中文。因为返回回来字符串中包换\n这种换行符,直接把字符串放入
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
PaoloMaldini (solo con te) 于
(Tue Feb 14 11:26:17 2012)
提到: && 去年要用,然后想从source code里搜个sample出来
结果几乎没地方用这个类 && 【 在 luma (上帝请我吃过饭,康神和我握过手) 的大作中提到: 】
: 这个api有点不太靠谱, 在4.0上还有各种莫名其妙的问题, 还是用httpclient好些
&&&&&&&& ☆─────────────────────────────────────☆ &&
shean (豆腐喝豆浆) 于
(Tue Feb 14 12:34:46 2012)
提到: && 相当不建议用这个类,一直有问题,去用HTTPClient吧...
【 在 feifei5082 (Cary) 的大作中提到: 】
: 用HttpURLConnection从服务器端读取内容回来,发现会发生乱码。
: Reader reader = new InputStreamReader(conn.getInputStream(), "gb2312");
: 采用这种方式转成中文。因为返回回来字符串中包换\n这种换行符,直接把字符串放入
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
paranoia (幽灵 | Push Everything!) 于
(Tue Feb 14 12:40:24 2012)
提到: &&&& 最早的时候也用过,后来发现各种问题 && 【 在 PaoloMaldini (solo con te) 的大作中提到: 】
: 去年要用,然后想从source code里搜个sample出来
: 结果几乎没地方用这个类
&&&&&&&& ☆─────────────────────────────────────☆ &&
Evan (数码宅男) 于
(Tue Feb 14 12:57:52 2012)
提到: && 话说,我们不是那个comet client最早是httpclient,后来改HttpURLConnection的么?
【 在 shean (豆腐喝豆浆) 的大作中提到: 】
: 相当不建议用这个类,一直有问题,去用HTTPClient吧...
&&&&&&&& ☆─────────────────────────────────────☆ &&
PaoloMaldini (solo con te) 于
(Tue Feb 14 13:03:02 2012)
提到: && 都是我做的。。 && 【 在 Evan (数码宅男) 的大作中提到: 】
: 话说,我们不是那个comet client最早是httpclient,后来改HttpURLConnection的么?
&&&&&&&& ☆─────────────────────────────────────☆ &&
Evan (数码宅男) 于
(Tue Feb 14 13:04:54 2012)
提到: && 然后,我意思是,为啥改?按说我也觉得HttpClient更简单啊
【 在 PaoloMaldini (solo con te) 的大作中提到: 】
: 都是我做的。。
&&&&&&&& ☆─────────────────────────────────────☆ &&
oolong (乌龙茶) 于
(Tue Feb 14 13:18:50 2012)
提到: && 因为google说从2.3开始应该用HttpURLConnection...
但经过实际检验之后,还是 httpClient 问题少一些 && 【 在 Evan (数码宅男) 的大作中提到: 】
: 然后,我意思是,为啥改?按说我也觉得HttpClient更简单啊
&&&&&&&& ☆─────────────────────────────────────☆ &&
PaoloMaldini (solo con te) 于
(Tue Feb 14 13:36:16 2012)
提到: && 好像是为了处理异常方便 && 【 在 Evan (数码宅男) 的大作中提到: 】
: 然后,我意思是,为啥改?按说我也觉得HttpClient更简单啊
&&&&&&&& 文章数:1&分页:查看:29599|回复:4
各位路过的牛人好,今天在写一个通过HttpUrlConnection发送post请求的一个例子
我要访问的网站是
点一个数据库栏目进去会有一个像这个样子的界面(部分)
点击上面的法律状态的按钮,就会发送一个Post请求
在Firebug下显示如下
(32.31 KB)
(14.71 KB)
(11.46 KB)
通过上面的步骤就开始写代码public void getFeiInfo(String sqid) throws IOException{
& && &&&//发送的请求参数,发送的格式也是Json的
& && && && && & String data = &{\&requestModule\&:\&PatentSearch\&,\&userId\&:\&\&,\&patentSearchConfig\&:{\&Action\&:\&loadLegal\&,\&Query\&:\&CN.8\&}}&;
& && &&&try {
& && && && && & //请求的地址
& && && && &URL url = new URL(&http://www.hnipo.net/client/interface.aspx&);
& && && && &HttpURLConnection conn = (HttpURLConnection) url.openConnection();
& && && && &//发送Post强求,开启其读写的功能
& && && && &conn.setDoOutput(true);
& && && && &conn.setDoInput(true);
& && && && &//这些参数是看了网上有人的建议,用上之后效果不大
& && && && &conn.setRequestProperty(&accpt&, && && &&&text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8&);
& && && && &conn.setRequestProperty(&User-Agent&, && && &&&Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/ Firefox/27.0&);
& && && && &conn.setRequestProperty(&X-Requested-With&, &XMLHttpRequest&);
& && && && &conn.setRequestProperty(&Connection&, && && &&&keep-alive&);
& && && && &conn.setRequestProperty(&Cookie&, && && &&&SP.NET_SessionId=rtznindc2qwycf45ixyji2rr&);
& && && && &
& && && && &conn.setRequestMethod(&POST&);
& && && && &//发送Post请求
& && && && &conn.connect();
& && && && &OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
& && && && &//发送参数
& && && && &writer.write(data);
& && && && &writer.flush();
& && && && &// 解析响应信息,用了很多种,用了字节流啊,处理流都试过了,这是最后试的那个
& && && && &//主要是不能解决乱码问题,响应的东西还是能够收到,就是乱码
& && && && &ByteArrayOutputStream baos=new ByteArrayOutputStream();
& && && && &byte[] buf = new byte[1024];
& && && && &int len = 0;
& && && && &InputStream is = conn.getInputStream();
& && && && &while((len=is.read(buf))!=-1){
& && && && && && &&&System.out.println(len);
& && && && && && &&&baos.write(buf, 0, len);
& && && && &}
& && && && &baos.flush();
& && && && &//这个utf8给予了太多的希望
& && && && &System.out.println(baos.toString(&utf8&));
& && && && &baos.close();
& && && && &is.close();
& && &&&} catch (MalformedURLException ex) {
& && && && &ex.printStackTrace();
& && &&&} catch (IOException ex) {
& && && && &ex.printStackTrace();
& & }问题就是这样了,我知道应该自己好好琢磨琢磨后在琢磨,不应该动不动就就网上的大神来给自己想方法,但这个已经试了很多方法了,其他的法Post请求,因为是返回的格式是html/text的,所以都很顺利,这个硬是卡住了,所以还烦请有兴趣的来指点一二,小弟在这里先谢过了……
本帖最后由 心空叶 于
21:01 编辑
{&ErrorInfo&:null,&Option&:{&__type&:&TrsResult:#Daweisoft.PatentSearch.Library&,&Code&:null,&Count&:2,&FamilyCount&:0,&GUID&:null,&LegalList&:[{&AN&:&.8&,&DT&:&&,&INFO&:&发明专利申请公布后的撤回\u000aIPC(主分类):A41D& &1\/20\u000a申请公布日:0a&,&LS&:&发明专利申请公布后的撤回&},{&AN&:&.8&,&DT&:&&,&INFO&:&公开\u000a&,&LS&:&公开&}],&PassTimeRead&:0,&PassTimeSearch&:15,&PatentList&:null,&ResultInfo&:null,&ResultSection&:null,&StatisticsFieldValue&:null},&ReturnValue&:0,&page&:0,&records&:0,&root&:null,&total&:0}
我试了下 没你说的问题 试试把自己的项目工程的编码改为 utf-8
天天好心情~~~
引用:原帖由 java_along 于
22:22 发表
{&ErrorInfo&:null,&Option&:{&__type&:&TrsResult:#Daweisoft.PatentSearch.Library&,&Code&:null,&Count&:2,&FamilyCount&:0,&GUID&:null,&LegalList&:[{&AN&:&.8&,&DT&:&&,&INFO&:&发 ... 首先,很感谢版主的回复,难不成是编译器的问题
我原来工程上的编码是gbk的,按照版主的提示,我改成了utf-8的了
(89.17 KB)
运行的结果不一样了,不过是不一样的乱码
我再到别人的机器上试试,还有一个可能是我用的编译器是8.5的原因。不过看到版主能正常运行出来,心里还算是松了口气。谢谢了
本帖最后由 心空叶 于
23:28 编辑
引用:原帖由 心空叶 于
23:20 发表
首先,很感谢版主的回复,难不成是编译器的问题
我原来工程上的编码是gbk的,按照版主的提示,我改成了utf-8的了275252
运行的结果不一样了,不过是不一样的乱码
我再到别人的机器上试试,还有一个可能是我用的编 ... 嗯 加油~~~
本帖最后由 java_along 于
23:27 编辑
天天好心情~~~
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty(&content-type&, &application/x-www-form-charset=UTF-8&);protected &int
chunkLength
&&&&&&&&&&使用存储块编码流模式进行输出时的存储块长度。
protected &int
fixedContentLength
&&&&&&&&&&使用固定长度流模式时的固定内容长度。
static&int
HTTP_ACCEPTED
&&&&&&&&&&HTTP 状态码 202:Accepted。
static&int
HTTP_BAD_GATEWAY
&&&&&&&&&&HTTP 状态码 502:Bad Gateway。
static&int
HTTP_BAD_METHOD
&&&&&&&&&&HTTP 状态码 405:Method Not Allowed。
static&int
HTTP_BAD_REQUEST
&&&&&&&&&&HTTP 状态码 400:Bad Request。
static&int
HTTP_CLIENT_TIMEOUT
&&&&&&&&&&HTTP 状态码 408:Request Time-Out。
static&int
HTTP_CONFLICT
&&&&&&&&&&HTTP 状态码 409:Conflict。
static&int
HTTP_CREATED
&&&&&&&&&&HTTP 状态码 201:Created。
static&int
HTTP_ENTITY_TOO_LARGE
&&&&&&&&&&HTTP 状态码 413:Request Entity Too Large。
static&int
HTTP_FORBIDDEN
&&&&&&&&&&HTTP 状态码 403:Forbidden。
static&int
HTTP_GATEWAY_TIMEOUT
&&&&&&&&&&HTTP 状态码 504:Gateway Timeout。
static&int
&&&&&&&&&&HTTP 状态码 410:Gone。
static&int
HTTP_INTERNAL_ERROR
&&&&&&&&&&HTTP 状态码 500:Internal Server Error。
static&int
HTTP_LENGTH_REQUIRED
&&&&&&&&&&HTTP 状态码 411:Length Required。
static&int
HTTP_MOVED_PERM
&&&&&&&&&&HTTP 状态码 301:Moved Permanently。
static&int
HTTP_MOVED_TEMP
&&&&&&&&&&HTTP 状态码 302:Temporary Redirect。
static&int
HTTP_MULT_CHOICE
&&&&&&&&&&HTTP 状态码 300:Multiple Choices。
static&int
HTTP_NO_CONTENT
&&&&&&&&&&HTTP 状态码 204:No Content。
static&int
HTTP_NOT_ACCEPTABLE
&&&&&&&&&&HTTP 状态码 406:Not Acceptable。
static&int
HTTP_NOT_AUTHORITATIVE
&&&&&&&&&&HTTP 状态码 203:Non-Authoritative Information。
static&int
HTTP_NOT_FOUND
&&&&&&&&&&HTTP 状态码 404:Not Found。
static&int
HTTP_NOT_IMPLEMENTED
&&&&&&&&&&HTTP 状态码 501:Not Implemented。
static&int
HTTP_NOT_MODIFIED
&&&&&&&&&&HTTP 状态码 304:Not Modified。
static&int
&&&&&&&&&&HTTP 状态码 200:OK。
static&int
HTTP_PARTIAL
&&&&&&&&&&HTTP 状态码 206:Partial Content。
static&int
HTTP_PAYMENT_REQUIRED
&&&&&&&&&&HTTP 状态码 402:Payment Required。
static&int
HTTP_PRECON_FAILED
&&&&&&&&&&HTTP 状态码 412:Precondition Failed。
static&int
HTTP_PROXY_AUTH
&&&&&&&&&&HTTP 状态码 407:Proxy Authentication Required。
static&int
HTTP_REQ_TOO_LONG
&&&&&&&&&&HTTP 状态码 414:Request-URI Too Large。
static&int
HTTP_RESET
&&&&&&&&&&HTTP 状态码 205:Reset Content。
static&int
HTTP_SEE_OTHER
&&&&&&&&&&HTTP 状态码 303:See Other。
static&int
HTTP_SERVER_ERROR
&&&&&&&&&&已过时。&放错了位置,它不应该存在。
static&int
HTTP_UNAUTHORIZED
&&&&&&&&&&HTTP 状态码 401:Unauthorized。
static&int
HTTP_UNAVAILABLE
&&&&&&&&&&HTTP 状态码 503:Service Unavailable。
static&int
HTTP_UNSUPPORTED_TYPE
&&&&&&&&&&HTTP 状态码 415:Unsupported Media Type。
static&int
HTTP_USE_PROXY
&&&&&&&&&&HTTP 状态码 305:Use Proxy。
static&int
HTTP_VERSION
&&&&&&&&&&HTTP 状态码 505:HTTP Version Not Supported。
protected &boolean
instanceFollowRedirects
&&&&&&&&&&如果为 true,则协议自动执行重定向。
protected &String
&&&&&&&&&&HTTP 方法(GET、POST、PUT 等)。
protected &int
responseCode
&&&&&&&&&&表示三位字数的 HTTP 状态码 (Status-Code) 的 int。
protected &String
responseMessage
&&&&&&&&&&HTTP 响应消息。
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches
HttpURLConnection(URL&u)
&&&&&&&&&&HttpURLConnection 的构造方法。
abstract &void
disconnect()
&&&&&&&&&&指示近期服务器不太可能有其他请求。
&InputStream
getErrorStream()
&&&&&&&&&&如果连接失败但服务器仍然发送了有用数据,则返回错误流。
static&boolean
getFollowRedirects()
&&&&&&&&&&返回指示是否应该自动执行 HTTP 重定向 (3xx) 的 boolean 值。
getHeaderField(int&n)
&&&&&&&&&&返回 nth 头字段的值。
getHeaderFieldDate(String&name,
long&Default)
&&&&&&&&&&返回解析为日期的指定字段的值。
getHeaderFieldKey(int&n)
&&&&&&&&&&返回 nth 头字段的键。
getInstanceFollowRedirects()
&&&&&&&&&&返回此 HttpURLConnection 的 instanceFollowRedirects 字段的值。
&Permission
getPermission()
&&&&&&&&&&返回一个权限对象,其代表建立此对象表示的连接所需的权限。
getRequestMethod()
&&&&&&&&&&获取请求方法。
getResponseCode()
&&&&&&&&&&从 HTTP 响应消息获取状态码。
getResponseMessage()
&&&&&&&&&&获取与来自服务器的响应代码一起返回的 HTTP 响应消息(如果有)。
setChunkedStreamingMode(int&chunklen)
&&&&&&&&&&此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
setFixedLengthStreamingMode(int&contentLength)
&&&&&&&&&&此方法用于在预先已知内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
static&void
setFollowRedirects(boolean&set)
&&&&&&&&&&设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
setInstanceFollowRedirects(boolean&followRedirects)
&&&&&&&&&&设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
setRequestMethod(String&method)
&&&&&&&&&&设置 URL 请求的方法,
以上方法之一是合法的,具体取决于协议的限制。
abstract &boolean
usingProxy()
&&&&&&&&&&指示连接是否通过代理。
addRequestProperty, connect, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentLength, getContentType, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderFieldInt, getHeaderFields, getIfModifiedSince, getInputStream, getLastModified, getOutputStream, getReadTimeout, getRequestProperties, getRequestProperty, getURL, getUseCaches, guessContentTypeFromName, guessContentTypeFromStream, setAllowUserInteraction, setConnectTimeout, setContentHandlerFactory, setDefaultAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
protected String method
HTTP 方法(GET、POST、PUT 等)。
chunkLength
protected int chunkLength
使用存储块编码流模式进行输出时的存储块长度。值 -1 表示对输出禁用存储块编码。
从以下版本开始:
fixedContentLength
protected int fixedContentLength
使用固定长度流模式时的固定内容长度。值 -1 表示对输出禁用固定长度流模式。
从以下版本开始:
responseCode
protected int responseCode
表示三位字数的 HTTP 状态码 (Status-Code) 的 int。
1xx:Informational
2xx:Success
3xx:Redirection
4xx:Client Error
5xx:Server Error
responseMessage
protected String responseMessage
HTTP 响应消息。
instanceFollowRedirects
protected boolean instanceFollowRedirects
如果为 true,则协议自动执行重定向。如果为 false,则协议不会自动执行重定向。
此字段由 setInstanceFollowRedirects 方法设置。其值由 getInstanceFollowRedirects 方法返回。
其默认值基于构造 HttpURLConnection 时静态 followRedirects 的值。
另请参见:setInstanceFollowRedirects(boolean),
getInstanceFollowRedirects(),
setFollowRedirects(boolean)
public static final int HTTP_OK
HTTP 状态码 200:OK。
另请参见:常量字段值
HTTP_CREATED
public static final int HTTP_CREATED
HTTP 状态码 201:Created。
另请参见:常量字段值
HTTP_ACCEPTED
public static final int HTTP_ACCEPTED
HTTP 状态码 202:Accepted。
另请参见:常量字段值
HTTP_NOT_AUTHORITATIVE
public static final int HTTP_NOT_AUTHORITATIVE
HTTP 状态码 203:Non-Authoritative Information。
另请参见:常量字段值
HTTP_NO_CONTENT
public static final int HTTP_NO_CONTENT
HTTP 状态码 204:No Content。
另请参见:常量字段值
HTTP_RESET
public static final int HTTP_RESET
HTTP 状态码 205:Reset Content。
另请参见:常量字段值
HTTP_PARTIAL
public static final int HTTP_PARTIAL
HTTP 状态码 206:Partial Content。
另请参见:常量字段值
HTTP_MULT_CHOICE
public static final int HTTP_MULT_CHOICE
HTTP 状态码 300:Multiple Choices。
另请参见:常量字段值
HTTP_MOVED_PERM
public static final int HTTP_MOVED_PERM
HTTP 状态码 301:Moved Permanently。
另请参见:常量字段值
HTTP_MOVED_TEMP
public static final int HTTP_MOVED_TEMP
HTTP 状态码 302:Temporary Redirect。
另请参见:常量字段值
HTTP_SEE_OTHER
public static final int HTTP_SEE_OTHER
HTTP 状态码 303:See Other。
另请参见:常量字段值
HTTP_NOT_MODIFIED
public static final int HTTP_NOT_MODIFIED
HTTP 状态码 304:Not Modified。
另请参见:常量字段值
HTTP_USE_PROXY
public static final int HTTP_USE_PROXY
HTTP 状态码 305:Use Proxy。
另请参见:常量字段值
HTTP_BAD_REQUEST
public static final int HTTP_BAD_REQUEST
HTTP 状态码 400:Bad Request。
另请参见:常量字段值
HTTP_UNAUTHORIZED
public static final int HTTP_UNAUTHORIZED
HTTP 状态码 401:Unauthorized。
另请参见:常量字段值
HTTP_PAYMENT_REQUIRED
public static final int HTTP_PAYMENT_REQUIRED
HTTP 状态码 402:Payment Required。
另请参见:常量字段值
HTTP_FORBIDDEN
public static final int HTTP_FORBIDDEN
HTTP 状态码 403:Forbidden。
另请参见:常量字段值
HTTP_NOT_FOUND
public static final int HTTP_NOT_FOUND
HTTP 状态码 404:Not Found。
另请参见:常量字段值
HTTP_BAD_METHOD
public static final int HTTP_BAD_METHOD
HTTP 状态码 405:Method Not Allowed。
另请参见:常量字段值
HTTP_NOT_ACCEPTABLE
public static final int HTTP_NOT_ACCEPTABLE
HTTP 状态码 406:Not Acceptable。
另请参见:常量字段值
HTTP_PROXY_AUTH
public static final int HTTP_PROXY_AUTH
HTTP 状态码 407:Proxy Authentication Required。
另请参见:常量字段值
HTTP_CLIENT_TIMEOUT
public static final int HTTP_CLIENT_TIMEOUT
HTTP 状态码 408:Request Time-Out。
另请参见:常量字段值
HTTP_CONFLICT
public static final int HTTP_CONFLICT
HTTP 状态码 409:Conflict。
另请参见:常量字段值
public static final int HTTP_GONE
HTTP 状态码 410:Gone。
另请参见:常量字段值
HTTP_LENGTH_REQUIRED
public static final int HTTP_LENGTH_REQUIRED
HTTP 状态码 411:Length Required。
另请参见:常量字段值
HTTP_PRECON_FAILED
public static final int HTTP_PRECON_FAILED
HTTP 状态码 412:Precondition Failed。
另请参见:常量字段值
HTTP_ENTITY_TOO_LARGE
public static final int HTTP_ENTITY_TOO_LARGE
HTTP 状态码 413:Request Entity Too Large。
另请参见:常量字段值
HTTP_REQ_TOO_LONG
public static final int HTTP_REQ_TOO_LONG
HTTP 状态码 414:Request-URI Too Large。
另请参见:常量字段值
HTTP_UNSUPPORTED_TYPE
public static final int HTTP_UNSUPPORTED_TYPE
HTTP 状态码 415:Unsupported Media Type。
另请参见:常量字段值
HTTP_SERVER_ERROR
@Deprecated
public static final int HTTP_SERVER_ERROR
已过时。&放错了位置,它不应该存在。HTTP 状态码 500:Internal Server Error。
另请参见:常量字段值
HTTP_INTERNAL_ERROR
public static final int HTTP_INTERNAL_ERROR
HTTP 状态码 500:Internal Server Error。
另请参见:常量字段值
HTTP_NOT_IMPLEMENTED
public static final int HTTP_NOT_IMPLEMENTED
HTTP 状态码 501:Not Implemented。
另请参见:常量字段值
HTTP_BAD_GATEWAY
public static final int HTTP_BAD_GATEWAY
HTTP 状态码 502:Bad Gateway。
另请参见:常量字段值
HTTP_UNAVAILABLE
public static final int HTTP_UNAVAILABLE
HTTP 状态码 503:Service Unavailable。
另请参见:常量字段值
HTTP_GATEWAY_TIMEOUT
public static final int HTTP_GATEWAY_TIMEOUT
HTTP 状态码 504:Gateway Timeout。
另请参见:常量字段值
HTTP_VERSION
public static final int HTTP_VERSION
HTTP 状态码 505:HTTP Version Not Supported。
另请参见:常量字段值
HttpURLConnection
protected HttpURLConnection(URL&u)
HttpURLConnection 的构造方法。
参数:u - URL
getHeaderFieldKey
public String getHeaderFieldKey(int&n)
返回 nth 头字段的键。有些实现可能将 0th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。在此情况下,getHeaderField(0) 返回状态行,而 getHeaderFieldKey(0) 返回 null。
覆盖:类 URLConnection 中的 getHeaderFieldKey
参数:n - 索引,其中 n &=0。
返回:nth 头字段的键;如果键不存在,则返回 null。
setFixedLengthStreamingMode
public void setFixedLengthStreamingMode(int&contentLength)
此方法用于在预先已知内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
如果应用程序尝试写入的数据多于指示的内容长度,或者应用程序在写入指示的内容长度前关闭了 OutputStream,将抛出异常。
启用输出流时,不能自动处理验证和重定向。如果需要验证和重定向,则在读取响应时将抛出 HttpRetryException。可以查询此异常以获取错误的详细信息。
该方法必须在连接 URLConnection 前调用。
参数:contentLength - 将写入 OutputStream 的字节数。
IllegalStateException - 如果已连接 URLConnection 或者已启用另外的流模式。
IllegalArgumentException - 如果指定的内容长度小于零。从以下版本开始:
另请参见:setChunkedStreamingMode(int)
setChunkedStreamingMode
public void setChunkedStreamingMode(int&chunklen)
此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。在此模式下,使用存储块传输编码发送请求正文。注意,并非所有 HTTP 服务器都支持此模式。
启用输出流时,不能自动处理验证和重定向。如果需要验证和重定向,则在读取响应时将抛出 HttpRetryException。可以查询此异常以获取错误的详细信息。
该方法必须在连接 URLConnection 前调用。
参数:chunklen - 要写入每个存储块的字节数。如果 chunklen 小于或等于零,则使用默认值。
IllegalStateException - 如果已连接 URLConnection 或者已启用其他流模式。从以下版本开始:
另请参见:setFixedLengthStreamingMode(int)
getHeaderField
public String getHeaderField(int&n)
返回 nth 头字段的值。有些实现可能将 0th 头字段视为特殊状态行,即由 HTTP 服务器返回的状态行。
此方法可以与 getHeaderFieldKey 方法一起使用来迭代消息中的所有头。
覆盖:类 URLConnection 中的 getHeaderField
参数:n - 索引,其中 n&=0。
返回:nth 头字段的值;如果值不存在,则返回 null。另请参见:getHeaderFieldKey(int)
setFollowRedirects
public static void setFollowRedirects(boolean&set)
设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。默认情况下为 true。Applet 不能更改此变量。
如果存在安全管理器,则此方法首先调用安全管理器的 checkSetFactory 方法来确保允许操作。这可能会导致 SecurityException 异常。
参数:set - 指示是否进行 HTTP 重定向的 boolean 值。
SecurityException - 如果安全管理器存在并且其 checkSetFactory 方法不允许进行此操作。另请参见:SecurityManager.checkSetFactory(),
getFollowRedirects()
getFollowRedirects
public static boolean getFollowRedirects()
返回指示是否应该自动执行 HTTP 重定向 (3xx) 的 boolean 值。
返回:如果应该自动执行 HTTP 重定向,则返回 true;否则返回 false。另请参见:setFollowRedirects(boolean)
setInstanceFollowRedirects
public void setInstanceFollowRedirects(boolean&followRedirects)
设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
默认值来自 followRedirects,其默认情况下为 true。
参数:followRedirects - 指示是否执行 HTTP 重定向的 boolean 值。从以下版本开始:
另请参见:instanceFollowRedirects,
getInstanceFollowRedirects()
getInstanceFollowRedirects
public boolean getInstanceFollowRedirects()
返回此 HttpURLConnection 的 instanceFollowRedirects 字段的值。
返回:此 HttpURLConnection 的 instanceFollowRedirects 字段的值。从以下版本开始:
另请参见:instanceFollowRedirects,
setInstanceFollowRedirects(boolean)
setRequestMethod
public void setRequestMethod(String&method)
throws ProtocolException
设置 URL 请求的方法,
以上方法之一是合法的,具体取决于协议的限制。默认方法为 GET。
参数:method - HTTP 方法
ProtocolException - 如果无法重置方法或者请求的方法对 HTTP 无效。另请参见:getRequestMethod()
getRequestMethod
public String getRequestMethod()
获取请求方法。
返回:HTTP 请求方法另请参见:setRequestMethod(java.lang.String)
getResponseCode
public int getResponseCode()
throws IOException
从 HTTP 响应消息获取状态码。例如,就以下状态行来说:
HTTP/1.0 200 OK
HTTP/1.0 401 Unauthorized
将分别返回 200 和 401。如果无法从响应中识别任何代码(即响应不是有效的 HTTP),则返回 -1。
返回:HTTP 状态码或 -1
IOException - 如果连接到服务器时发生错误。
getResponseMessage
public String getResponseMessage()
throws IOException
获取与来自服务器的响应代码一起返回的 HTTP 响应消息(如果有)。对于如下响应:
HTTP/1.0 200 OK
HTTP/1.0 404 Not Found
分别提取 String &OK& 和 &Not Found&。如果无法从响应识别任何字符(结果不是有效的 HTTP),则返回 null。
返回:HTTP 响应消息或 null
IOException - 如果连接到服务器时发生错误。
getHeaderFieldDate
public long getHeaderFieldDate(String&name,
long&Default)
从类 URLConnection 复制的描述
返回解析为日期的指定字段的值。结果为指定字段表示的距离格林威治标准时间 1970 年 1 月 1 日的毫秒数。
有些连接类型(例如 http-ng)具有预解析头,所以存在这种形式的 getHeaderField。用于该类型的连接可重写此方法和缩短解析过程。
覆盖:类 URLConnection 中的 getHeaderFieldDate
参数:name - 头字段的名称。Default - 默认值。
返回:字段的值,解析为日期。如果该字段缺少或有错误,则返回 Default 参数的值。
disconnect
public abstract void disconnect()
指示近期服务器不太可能有其他请求。调用 disconnect() 并不意味着可以对其他请求重用此 HttpURLConnection 实例。
usingProxy
public abstract boolean usingProxy()
指示连接是否通过代理。
返回:指示连接是否使用代理的 boolean 值。
getPermission
public Permission getPermission()
throws IOException
从类 URLConnection 复制的描述
返回一个权限对象,其代表建立此对象表示的连接所需的权限。如果建立连接不需要任何权限,则此方法返回 null。默认情况下,此方法返回 java.security.AllPermission。子类应重写此方法并返回一个权限对象,该对象最能代表用于建立到 URL 的连接所需的权限。例如表示 file:URL 的 URLConnection 将返回 java.io.FilePermission 对象。
返回的权限可能取决于连接的状态。例如,连接之前的权限可能不同于连接之后的权限。例如,一个 HTTP 服务器(如 )可能将连接重定向到一台不同的主机(如 )。在连接之前,连接返回的权限将代表连接到
所需的权限,而连接之后返回的权限将是连接到
所需的权限。
使用权限通常有两个目的:保护通过 URLConnection 获取的对象的缓存;检查接收方的权限以了解特定的 URL。第一种情况下,应在获取对象之后 再获取权限。例如,在一个 HTTP 连接中,这将代表连接到最终将从该主机获取数据的主机的权限。第二种情况下,应在连接之前 对权限进行获取和检查。
覆盖:类 URLConnection 中的 getPermission
返回:代表建立此 URLConnection 表示的连接所需的权限的权限对象。
IOException - 如果计算权限需要网络或文件 I/O 并且在计算过程中出现异常。
getErrorStream
public InputStream getErrorStream()如果连接失败但服务器仍然发送了有用数据,则返回错误流。典型示例是,当 HTTP 服务器使用 404 响应时,将导致在连接中抛出 FileNotFoundException,但是服务器同时还会发送建议如何操作的 HTML 帮助页。此方法不会导致启用连接。如果没有建立连接,或者在连接时服务器没有发生错误,或服务器出错但没有发送错误数据,则此方法返回 null。这是默认设置。返回:错误流(如果存在);如果没有发生错误、没有建立连接或服务器没有发送有用数据,则返回 null。
Android下的HttpURLConnection使用方法和示例
上一篇:下一篇:
HttpURLConnection相关文章请点击
责任申明:本站内容均整理自互联网,若有侵权,请联系我们。使用本站提供的任务技术内容造成不良后果,本站不负任何责任。
欢迎投稿,电子邮件:(#号换成@)&& QQ群1: &&}

我要回帖

更多关于 中文传输乱码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信