一键导入
http-warn-curl
Add WARN logging with curl command when HTTP response status code is not 200 in SDK/API client classes using UNet
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Add WARN logging with curl command when HTTP response status code is not 200 in SDK/API client classes using UNet
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Add HTTP non-200 warning logging with curl commands in Java HTTP client classes — helper method, per-call invocation, header/body inclusion
Review and fix common bugs in async Java database write patterns — connection lifecycle, thread safety, thread pool usage, bounded queues, memory control
Audit and fix SQL injection vulnerabilities in Java code — quote escaping, whitelist validation, URL encoding, and string comparison bugs
基于 SOC 职业分类
| name | http-warn-curl |
| description | Add WARN logging with curl command when HTTP response status code is not 200 in SDK/API client classes using UNet |
| source | auto-skill |
| extracted_at | 2026-06-29T11:49:09.655Z |
在 API SDK / 客户端类(如 ClientSdk、ServerSdk)中,使用 UNet 发起 HTTP 请求后,当服务端返回非 200 状态码时,输出 WARN 日志(含状态码、方法、URL)以及一条可直接在终端执行的 curl 命令,方便快速排查问题。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOGGER = LoggerFactory.getLogger(YourClass.class);
logNon200Warning 辅助方法/**
* 当 HTTP 状态码不为 200 时,输出 WARN 日志和对应的 curl 命令
*
* @param net UNet 实例
* @param method HTTP 方法 (GET/POST/PUT/DELETE)
* @param url 请求 URL
* @param body 请求体(可为 null)
*/
private void logNon200Warning(UNet net, String method, String url, String body) {
int statusCode = net.getLastStatusCode();
if (statusCode == 200) {
return;
}
LOGGER.warn("HTTP status code {} for {} {}", statusCode, method, url);
StringBuilder curl = new StringBuilder();
curl.append("curl -X ").append(method).append(" '").append(url).append("'");
// 根据实际情况调整 Authorization header 格式
if (StringUtils.isNotBlank(this.tokenField)) {
curl.append(" -H 'Authorization: ").append(this.tokenField).append("'");
}
// Bearer token 场景
// curl.append(" -H 'Authorization: Bearer ").append(this.serverToken).append("'");
if (StringUtils.isNotBlank(body)) {
// 转义 body 中的单引号,安全拼接
String escaped = body.replace("'", "'\\''");
curl.append(" -d '").append(escaped).append("'");
}
LOGGER.warn("Curl: {}", curl);
}
模板代码 — 在 net.doGet/doPost/doPut/doDelete/postMsg 之后紧接着调用:
// GET 请求 - 无 body
UNet net = this.createNet();
String rst = net.doGet(url);
this.logNon200Warning(net, "GET", url, null);
// POST 请求 - 有 body
UNet net = this.createNet();
String rst = net.doPost(url, bodyStr);
this.logNon200Warning(net, "POST", url, bodyStr);
// PUT 请求 - 有 body
UNet net = this.createNet();
String rst = net.doPut(url, bodyStr);
this.logNon200Warning(net, "PUT", url, bodyStr);
// DELETE 请求 - 无 body
UNet net = this.createNet();
String rst = net.doDelete(url);
this.logNon200Warning(net, "DELETE", url, null);
// DELETE 请求 - 有 body
UNet net = this.createNet();
String rst = net.doDelete(url, bodyContent);
this.logNon200Warning(net, "DELETE", url, bodyContent);
// postMsg 是 doPost 的别名
UNet net = this.createNet();
String rst = net.postMsg(url, bodyContent);
this.logNon200Warning(net, "POST", url, bodyContent);
JSONObject body 变量,提取字符串时请改用不同变量名(如 bodyStr)UNet 设置的 header 格式来构建 curl 的 -H 参数null,辅助方法内部会跳过 -d'\'' 转义,确保 bash 下安全执行