您可能知道在HTTP标头中发送分块文件,没有内容长度,因此程序必须等待0才能理解该文件已结束.
--sample http header
POST /some/path HTTP/1.1
Host: www.example.com
Content-Type: text/plain
Transfer-Encoding: chunked
25
This is the data in the first chunk
8
sequence
0
Run Code Online (Sandbox Code Playgroud)
为了接收该文件,可以使用以下代码.
ResponseHandler<String> reshandler = new ResponseHandler<String>() {
public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
HttpEntity entity = response.getEntity();
InputStream in = entity.getContent();
byte[] b = new byte[500];
StringBuffer out = new StringBuffer();
int len = in.read(b);
out.append(new String(b, 0 , len));
return out.toString();
}
};
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我使用流媒体通道,换句话说没有0表明文件已经结束.无论如何,如果我使用这个代码,它似乎永远等待0永远不会发生.我的问题是有没有更好的方法从流通道接收分块文件?
我正在开发一个Android.mk文件,对于单个模块,其中一个文件需要不同的CPPFLAGS; 即,它需要-frtti启用,而其他人需要Android默认的-fno-rtti.
显而易见的解决方案是特定于目标的变量,但奇怪的是它们似乎不会影响编译,即使有一些摆弄以确保值应该在正确的时间固定.
这是我Android.mk的摘录(名称已更改以保护我):
LOCAL_MODULE := foo_bar
LOCAL_SRC_FILES := \
foo_bar.cpp \
foo_baz.cpp
my_intermediates:= $(local-intermediates-dir)/foo_baz.o
$(my_intermediates): LOCAL_CPPFLAGS := -frtti
Run Code Online (Sandbox Code Playgroud)
我试图简单地做foo_baz.o:代替$(my_intermediates),并试图替换+=为:=没有变化.
那么,是否有特定于Android的方法来覆盖特定源文件的CPPFLAGS(或CFLAGS)?
(在这种情况下,我使用的是Eclair Android源代码,虽然它可能适用于NDK;请参阅下面的答案.)