java添加http headers_java http协议,添加header以及post传参,以及服务端获取

一、客户端请求

public static String test(){

JSONObject obj = new JSONObject();

obj.put("cusName","禹州林业集团");

obj.put("socialCreditCode","11431000006542054G");

String parm = obj.toString();

String result = "";//BASE64加密的返回结果

String res = "";//解密后的字符串

PrintWriter out = null;

BufferedReader in = null;

try {

java.net.URL realUrl;

realUrl = new URL("http://127.0.0.1:9998/test/c/getC");

HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();

conn.setRequestMethod("POST");

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

conn.setRequestProperty("Content-Type", "text/plain;charset=utf-8");

conn.addRequestProperty("token","11111"); //设置header信息

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// 获取URLConnection对象对应的输出流

out = new PrintWriter(conn.getOutputStream());

// 发送请求参数

out.print(parm);//json传参

// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String line;

while ((line = in.readLine()) != null) {

result += line;

}

System.out.println(res);

System.out.println(result);

} catch (Exception e) {

e.printStackTrace();

} finally {// 使用finally块来关闭输出流、输入流

try {

if (out != null) {

out.close();

}

if (in != null) {

in.close();

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

return result;

}

二、服务端获取

@RequestMapping(value = "/c/getC",method=RequestMethod.POST)

public String getCustomerInfoForGGIP(HttpServletRequest request) throws Exception{

String cusName = "";

String socialCreditCode = "";

String result = "";

BASE64Encoder base64Encoder = new BASE64Encoder();

JSONObject resultObject = new JSONObject();

String token = request.getHeader("token");//获取header中内容

if(StringUtils.isEmpty(token)){

resultObject.put("code","1111");

resultObject.put("msg","鉴权的token不能为空!");

return resultObject.toString();

}

if(!"ZGCDB".equals(token)){

resultObject.put("code","1111");

resultObject.put("msg","鉴权不成功!");

return resultObject.toString();

}else{

String parm = "";

BufferedReader in = null;

in = new BufferedReader(new InputStreamReader(request.getInputStream()));

String line;

while ((line = in.readLine()) != null) { //获取参数

parm += line;

}

if(parm!=null){

JSONObject paramJson = JSONObject.fromObject(parm);

if(!paramJson.isNullObject()){

cusName = paramJson.getString("cusName");

socialCreditCode = paramJson.getString("socialCreditCode");

result = customerBo.getCustomerInfoForGGIP(cusName,socialCreditCode,request);

}else{

resultObject.put("code","1111");

resultObject.put("msg","参数解析错误!");

return resultObject.toString();

}

}else{

resultObject.put("code","1111");

resultObject.put("msg","参数解析错误!");

return resultObject.toString();

}

}

return result;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。首先,我们需要了解一下什么是libevent。libevent是一个轻量级的开源事件通知库,可用于实现高性能的网络服务器和客户端。 下面是一个简单的使用C++和libevent实现的HTTP服务器的示例代码: ```cpp #include <event2/event.h> #include <event2/http.h> #include <event2/buffer.h> #include <event2/keyvalq_struct.h> #include <iostream> void handle_request(struct evhttp_request *req, void *arg) { std::cout << "Got a request!" << std::endl; // 解析URI const char *uri = evhttp_request_get_uri(req); std::cout << "URI: " << uri << std::endl; // 解析HTTP方法 const char *method; switch (evhttp_request_get_command(req)) { case EVHTTP_REQ_GET: method = "GET"; break; case EVHTTP_REQ_POST: method = "POST"; break; case EVHTTP_REQ_HEAD: method = "HEAD"; break; case EVHTTP_REQ_PUT: method = "PUT"; break; case EVHTTP_REQ_DELETE: method = "DELETE"; break; case EVHTTP_REQ_OPTIONS: method = "OPTIONS"; break; case EVHTTP_REQ_TRACE: method = "TRACE"; break; case EVHTTP_REQ_CONNECT: method = "CONNECT"; break; case EVHTTP_REQ_PATCH: method = "PATCH"; break; default: method = "UNKNOWN"; break; } std::cout << "Method: " << method << std::endl; // 解析请求 struct evkeyvalq headers; evhttp_request_get_input_headers(req, &headers); for (struct evkeyval *header = headers.tqh_first; header; header = header->next.tqe_next) { std::cout << header->key << ": " << header->value << std::endl; } // 解析请求正文 struct evbuffer *buf = evhttp_request_get_input_buffer(req); std::cout << "Body: " << evbuffer_pullup(buf, -1) << std::endl; // 发送响应 const char *response = "Hello, world!"; struct evbuffer *evb = evbuffer_new(); evbuffer_add_printf(evb, "%s", response); evhttp_send_reply(req, HTTP_OK, "OK", evb); evbuffer_free(evb); } int main() { // 初始化libevent struct event_base *base = event_base_new(); struct evhttp *http = evhttp_new(base); evhttp_bind_socket(http, "0.0.0.0", 8080); // 设置请求处理函数 evhttp_set_cb(http, "/", handle_request, nullptr); // 启动事件循环 event_base_dispatch(base); // 清理资源 evhttp_free(http); event_base_free(base); return 0; } ``` 在这个示例中,我们使用了libevent的一些API来解析HTTP请求和发送响应。首先,我们使用`evhttp_request_get_uri`函数来获取请求的URI,然后使用`evhttp_request_get_command`函数获取请求的HTTP方法。接着,我们使用`evhttp_request_get_input_headers`函数获取请求,并使用`evkeyval`结构体遍历请求。最后,我们使用`evhttp_request_get_input_buffer`函数获取请求正文,并使用`evbuffer_pullup`函数获取请求正文的内容。 然后,我们使用`evbuffer_new`函数创建一个新的`evbuffer`对象,并使用`evbuffer_add_printf`函数将响应内容添加到`evbuffer`中。最后,我们使用`evhttp_send_reply`函数发送响应。 最后,我们使用`event_base_dispatch`函数启动事件循环,开始监听HTTP请求。当有请求到达时,libevent将调用`handle_request`函数来处理请求。 以上就是一个简单的使用C++和libevent实现的HTTP服务器的示例代码,希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值