我想将自己的机器名称添加到http请求标头中作为自定义 JAVA中的变量。
这是我的代码:
private void sendIssuesToWebService(Issue issue) {
// TODO Auto-generated method stub
System.out.println("\n\n");
//LOG.info("Sending issue : "+issue.getKey());
HttpURLConnection ycSend = null;
BufferedReader in1 = null;
JSONObject j = null ;
try{
URL urlSend = null;
try{
urlSend = new URL(targetURL+"Issue/ImportIssue");
}
catch (MalformedURLException e) {
// TODO Auto-generated catch block
LOG.severe(" URL Malformed Exception while authentication ");
e.printStackTrace();
}
try{
ycSend = (HttpURLConnection) urlSend.openConnection();
}
catch (IOException e) {
// TODO Auto-generated catch block
LOG.severe(" Error in Http URL Connection while authentication");
e.printStackTrace();
}
ycSend.setDoOutput(true);
ycSend.setRequestMethod("POST");
ycSend.setRequestProperty("Content-Type", "application/json");
try{
OutputStreamWriter outSend = null;
outSend = new OutputStreamWriter(ycSend.getOutputStream());
outSend.write(IssueAndHistoryJsonStr);
outSend.flush();
}catch(Exception e)
{
LOG.severe("Cannot write output stream while sending issue ");
}
System.out.println( ycSend.getResponseCode()+"\n\n\n");
if(ycSend.getResponseCode()!=200){
in1 = new BufferedReader(new InputStreamReader(
ycSend.getErrorStream()));
String inputLine;
while ((inputLine = in1.readLine()) != null)
inputResponse=inputResponse+inputLine;
//System.out.println("$$$$$$$"+inputResponse);
try{
j = new JSONObject(inputResponse);
LOG.info(j.get("errors").toString());
}
catch(Exception e){
String errorTitle = inputResponse.substring(inputResponse.indexOf("<title>")+7,inputResponse.indexOf("</title>"));
LOG.severe(errorTitle);
}
LOG.severe(" Error in Sending an Issue to the web service and the issue key is "+issue.getKey());
//LOG.severe("Error is : "+j.get("errors"));
}
else
{
LOG.info("Issue "+issue.getKey()+" Sent successfully" );
countIssues++;
System.out.println("\n\n");
}
//LOG.info("Issue ***** " +issue.getKey()+ " sent with response : "+inputResponse);
}
catch(Exception e)
{
LOG.severe(" Error in Sending an Issue to the web service and the issue key is "+issue.getKey());
//LOG.severe(yc.getResponseMessage());
//LOG.severe("Error is : "+j.get("errors"));
e.printStackTrace();
}
}
答案 0 :(得分:2)
我相信你只想添加另一个类似于内容类型的requestProperty。
ycSend.setRequestProperty("Machine-Name", MachineName);
答案 1 :(得分:-1)
也许this会有所帮助。或者,您可以查看Apache HTTPClient来执行此操作。
要获取主机名,您可以这样做:
try {
InetAddress addr = InetAddress.getLocalHost();
// Get hostname
String hostname = addr.getHostName();
} catch (UnknownHostException e) {
//DO SOMETHING
}