用Delphi7 Post 请求到Tomcat,得到Response,中文OK

比较简单的问题,好久没用Delphi了,折腾了一番。

首先确定Tomcat中的应用,能够正确得到中文参数,没有乱码,这个不说了,网上太多文章了

然后写一段Java测试程序:

public ActionForward t1(ActionMapping mapping,
			  ActionForm form,
			  HttpServletRequest request,
			  HttpServletResponse response) {
		D7Form f = (D7Form)form;
		String s = f.getS();
		String t = f.getT();
		System.out.println(s);
		System.out.println(t);
		JSONObject j = new JSONObject();
		try {
			j.put("r" , Integer.valueOf(1));
			j.put("s", "测试");
			System.out.println(j.toString());
			response.setContentType("text/json;charset=utf-8");
			response.getOutputStream().write(j.toString().getBytes("UTF-8"));
		} catch (JSONException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;
	}

代码很简单,仅仅是Debug用。首先System.out出来Form中的参数s,t;然后用假的数据拼装成JSONObject,写到Response中。

Delphi部分的代码如下:


procedure TForm1.btn1Click(Sender: TObject);
var
  url:String;
  param: TIdMultiPartFormDataStream;
  Response: TStringStream;
begin
  url := 'http://localhost/d7.do?state=t1';
  param := TIdMultiPartFormDataStream.Create;

  try
    param.AddFormField('s','offers');
    param.AddFormField('t', AnsiToUtf8('提交中文测试'));
    Response := TStringStream.Create('');
    idhtp.Post(url, param, Response);
    mmo1.Text := Utf8ToAnsi(Response.DataString);
  finally
    Response.Free;
    param.Free;
  end;
end;

关键是AnsiToUTF8函数。这里用的Indy组件是比较老的版本9,AddFormField没有第三个编码参数,所以要用AnsiToUtf8转换一下。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值