我和我的团队有一台运行Restfull webservice的Tomcat服务器,使用RestEasy实现:
public class Final1 extends Activity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.final1);
Bundle bundle = getIntent().getExtras();
TextView textView = (TextView)findViewById(R.id.txt);
textView.setText(bundle.getCharSequence("rg"));
Bundle bundle1 = getIntent().getExtras();
TextView textView1 = (TextView)findViewById(R.id.txt1);
textView.setText(bundle1.getCharSequence("rg1"));
Bundle bundle2 = getIntent().getExtras();
TextView textView2 = (TextView)findViewById(R.id.txt2);
textView.setText(bundle2.getCharSequence("rg2"));
Bundle bundle3 = getIntent().getExtras();
TextView textView3 = (TextView)findViewById(R.id.txt3);
textView.setText(bundle3.getCharSequence("rg3"));
Bundle bundle4 = getIntent().getExtras();
TextView textView4 = (TextView)findViewById(R.id.txt4);
textView.setText(bundle4.getCharSequence("rg4"));
Bundle bundle5 = getIntent().getExtras();
TextView textView5 = (TextView)findViewById(R.id.txt5);
textView.setText(bundle5.getCharSequence("rg5"));
Bundle bundle6 = getIntent().getExtras();
TextView textView6 = (TextView)findViewById(R.id.txt6);
textView.setText(bundle6.getCharSequence("rg6"));
btn = (Button)findViewById(R.id.restartBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(v.getContext(), Quiz.class);
startActivityForResult(in, 0);
}
});
}
}
我们需要为此服务制作压缩帖子。问题是我们找不到有效的实现。
我们尝试使用RestEasy客户端,但它似乎并不符合Post Request的主体:www.posttestserver.com/data/2016/01/06/15.33.391016591335
< / LI>最后,我们尝试了一个自定义类:https://gist.github.com/takumakei/913067。但是我们在请求中遇到了400错误:
HTTP / 1.1 400错误请求[内容编码:gzip,内容类型: 为text / html; charset = UTF-8,日期:星期四,07 Jan 2016 10:07:05 GMT,服务器: Apache-Coyote / 1.1,Content-Length:66,Connection:keep-alive]
我们没有想法,这是一个简单的HTTP客户端功能。有什么想法吗?
OBS:这是RestEasy代理:
@POST
@GZIP
@Path("/capture")
@Consumes(MediaType.APPLICATION_JSON)
Response RecieveData(@GZIP RecievingData recievingData);
编辑:防火墙中有一些更改,第三种方法更改为错误400.
答案 0 :(得分:0)
如果使用Tomcat,为什么不添加一个RequestFilter来预处理包含标题Content-Encoding的接收请求:gzip并在其余的过滤链处理它之前将其解压缩?
编辑: 我猜你的第三个选项实际上可能有效(窥探网络验证),问题是你从服务器得到 403 - 禁止响应。这是授权问题,而不是URL,请求编码或其他任何问题。 GZIP现在可能正在为你工作。
编辑: HTTP响应代码400的最新输出 - 错误请求显示内容类型:text / html。 Controller期望Content-Type:application / json,因此客户端没有按照Controller的要求设置ContentType。重新检查您的客户端代码的使用和配置。
答案 1 :(得分:0)
最后,我使用Resteasy框架为服务器和客户端实现GZIP压缩。
服务器端: https://docs.jboss.org/resteasy/docs/2.3.0.GA/userguide/html/gzip.html
客户端: https://docs.jboss.org/resteasy/docs/2.2.1.GA/userguide/html/RESTEasy_Client_Framework.html
这对我有用。