Java 获取http url连接错误

Java 获取http url连接错误,java,xmlhttprequest,weblogic,httpconnection,Java,Xmlhttprequest,Weblogic,Httpconnection,当我试图从服务器读取数据时,我收到错误400:从服务器读取数据时出现错误请求错误。虽然当为本地主机URL运行相同的代码时,它仍然可以正常工作 这是我的密码: package xmlComm; import java.io.*; import java.net.*; import java.util.*; import java.text.*; import javax.xml.*; import javax.xml.rpc.Call; public class SampleXml {

当我试图从服务器读取数据时,我收到错误400:从服务器读取数据时出现错误请求错误。虽然当为本地主机URL运行相同的代码时,它仍然可以正常工作

这是我的密码:

package xmlComm;

import java.io.*;
import java.net.*;
import java.util.*;
import java.text.*;
import javax.xml.*;
import javax.xml.rpc.Call;

public class SampleXml {

    public String TelXml(String msisdn,String region){
        String temp="";
        System.out.println(region);
        try{


            /*******************PARAMETER DECLARATION AND INITIALIZATION *******************************/
            URL url = null;
            String HOSTNAME=InetAddress.getLocalHost().getHostName().replaceAll("[\\-\\+\\.\\^:,]", "");
            Date TIMESTAMP=new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmssSSSS");
            String ORIGIN_TIMESTAMP=sdf1.format(TIMESTAMP);
            String FINAL_DATE=ORIGIN_TIMESTAMP.substring(0, 8)+"T"+ORIGIN_TIMESTAMP.substring(8,10)+":"+ORIGIN_TIMESTAMP.substring(10,12)+":"+ORIGIN_TIMESTAMP.substring(12,14)+"+"+ORIGIN_TIMESTAMP.substring(14,18);
            String TRANSACTION_ID=sdf.format(TIMESTAMP);
            HttpURLConnection urlConn;
            DataOutputStream printout;
            BufferedReader input;   

            /********************************************************************************************/

            url =new URL("server URL");// no problem in URL


            urlConn =(HttpURLConnection)url.openConnection();

            System.out.println(urlConn);
            //urlConn.connect();
            //urlConn.wait(2);
            urlConn.setDoInput(true);
            urlConn.setDoOutput(true);
            urlConn.setUseCaches(false);


            //java.util.Date dt = new java.util.Date();
                //              SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
                //              dateTime=formatter.format(dt);
            //set request method
            urlConn.setRequestMethod("POST");
            //set request type
            //urlConn.setRequestProperty("Content-Type", "application/xml");
            //urlConn.setRequestProperty(key, value)
            StringBuffer buf = new StringBuffer(); 
            buf.append("POST /ABC/1.1\n"+
                    "User-Agent: ABC\n"+
                    "Authorization:Basic ABC\n"+
                    "Content-Type: text/xml\n"+
                    "Content-Length: 706\n\n"+
                    "<?xml version=\"1.0\"encoding=\"ISO-8859-1\"?>\n"+
                    "<methodCall>\n"+
                    "<methodName>MethodNameABC</methodName>\n"+
                    "<params>\n"+
                    "<param>\n"+
                    "<value>\n"+
                    "<struct>\n"+
                    "<member>\n"+
                    "<name>originNodeType</name>\n"+
                    "<value><string>EXT</string></value>\n"+
                    "</member>\n"+
                    "<member>\n"+
                    "<name>originHostName</name>\n"+
                    "<value><string>"+HOSTNAME+"</string></value>\n"+
                    "</member>\n"+
                    "<member>\n"+
                    "<name>originTransactionID</name>\n"+
                    "<value><string>"+TRANSACTION_ID+"</string></value>\n"+
                    "</member>\n"+
                    "<member>\n"+
                    "<name>originTimeStamp</name>\n"+
                    "<value><dateTime.iso8601>"+FINAL_DATE+"</dateTime.iso8601></value>\n"+
                    "</member>\n"+
                    "<member>\n"+
                    "<name>subscriberNumber</name>\n"+
                    "<value><string>"+msisdn+"</string></value>\n"+
                    "</member>\n"+
                    "</struct>\n"+
                    "</value>\n"+
                    "</param>\n"+
                    "</params>\n"+
                    "</methodCall>");


            String Inpt = buf.toString();
            System.out.println("*********************************   Request   ********************************");
            System.out.println(Inpt);
            printout = new DataOutputStream(urlConn.getOutputStream());
            printout.writeBytes(Inpt);
            printout.flush ();
            printout.close ();


            //Get response data.
            input = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));

            String str;

            while((str = input.readLine())!=null){
                str += input.readLine();
                    if(str!=null){
                    temp=str;
                }
            }
            System.out.println("*********************************   Response   ********************************");
            System.out.println(temp);

        }   
        catch (MalformedURLException me{
            System.err.println("MalformedURLException; " + me);
        }
        catch (IOException ioe){
            System.err.println("IOException; " + ioe.getMessage());
        }
        String returnmsg = "abcc";
        return returnmsg;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SampleXml Sxml= new SampleXml();
        Sxml.TelXml("1234567890", "City");
    }
}
包xmlComm;
导入java.io.*;
导入java.net。*;
导入java.util.*;
导入java.text.*;
导入javax.xml.*;
导入javax.xml.rpc.Call;
公共类SampleXml{
公共字符串TelXml(字符串msisdn,字符串区域){
字符串temp=“”;
系统输出打印LN(区域);
试一试{
/*******************参数声明和初始化*******************************/
URL=null;
字符串HOSTNAME=InetAddress.getLocalHost().getHostName().replaceAll(“[\\-\+\\.\\^:,]”,“”);
日期时间戳=新日期();
SimpleDataFormat sdf=新的SimpleDataFormat(“yyyymmddhhmmssss”);
SimpleDataFormat sdf1=新的SimpleDataFormat(“yyyymmddhhmmsssss”);
字符串来源\时间戳=sdf1.format(时间戳);
字符串FINAL_DATE=ORIGIN_TIMESTAMP.substring(0,8)+“T”+ORIGIN_TIMESTAMP.substring(8,10)+“:”+ORIGIN_TIMESTAMP.substring(10,12)+“:”+ORIGIN_TIMESTAMP.substring(12,14)+“+”+ORIGIN u TIMESTAMP.substring(14,18);
字符串事务_ID=sdf.format(时间戳);
httpurlconn;
数据输出流打印输出;
缓冲读取器输入;
/********************************************************************************************/
url=新url(“服务器url”);//url中没有问题
urlConn=(HttpURLConnection)url.openConnection();
System.out.println(urlConn);
//urlConn.connect();
//urlConn.等待(2);
urlConn.setDoInput(true);
urlConn.setDoOutput(真);
urlConn.setUseCaches(false);
//java.util.Date dt=new java.util.Date();
//SimpleDataFormat格式化程序=新的SimpleDataFormat(“dd/MM/yyyy HH:MM:ss”);
//dateTime=formatter.format(dt);
//设置请求方法
urlConn.setRequestMethod(“POST”);
//设置请求类型
//setRequestProperty(“内容类型”、“应用程序/xml”);
//urlConn.setRequestProperty(键、值)
StringBuffer buf=新的StringBuffer();
buf.append(“POST/ABC/1.1\n”+
“用户代理:ABC\n”+
“授权:基本ABC\n”+
“内容类型:text/xml\n”+
“内容长度:706\n\n”+
“\n”+
“\n”+
“MethodNameABC\n”+
“\n”+
“\n”+
“\n”+
“\n”+
“\n”+
“originNodeType\n”+
“外部\n”+
“\n”+
“\n”+
“原始主机名\n”+
“”+主机名+“\n”+
“\n”+
“\n”+
“originTransactionID\n”+
“+事务\u ID+”\n”+
“\n”+
“\n”+
“原始时间戳\n”+
“+最终日期+”\n”+
“\n”+
“\n”+
“subscriberNumber\n”+
“+msisdn+”\n”+
“\n”+
“\n”+
“\n”+
“\n”+
“\n”+
"");
字符串Inpt=buf.toString();
System.out.println(“*************************************************************************************************************************”);
系统输出打印项次(输入);
printout=newdataoutputstream(urlConn.getOutputStream());
打印输出。写入字节(输入);
printout.flush();
printout.close();
//获取响应数据。
输入=新的BufferedReader(新的InputStreamReader(urlConn.getInputStream());
字符串str;
而((str=input.readLine())!=null){
str+=input.readLine();
如果(str!=null){
temp=str;
}
}
System.out.println(“************************************************************响应*************************************”);
系统输出打印项次(温度);
}   
抓住我{
System.err.println(“MalformedURLException;”+me);
}
捕获(ioe异常ioe){
System.err.println(“IOException;”+ioe.getMessage());
}
字符串returnmsg=“abcc”;
returnmsg;
}
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
SampleXml Sxml=新的SampleXml();
TelXml(“1234567890”,“城市”);
}
}

//urlConn.setRequestProperty(“内容类型”,“应用程序/xml”);您能取消注释并重试吗?嗨,安卓,取消注释的结果相同。更重要的是,当我在进行连接后打印响应代码时,它返回以下内容。urlConn=(HttpURLConnection)url.openConnection();int code=urlConn.getResponseCode();System.out.println(“服务器连接代码是“+代码”);错误是服务器连接代码是411线程“Main thread”java.lang.IllegalStateException中的异常:已连接到xmlComm.TelcordiaXml.TelXml(TelcordiaXml.java:50)的java.net.URLConnection.setDoInput(URLConnection.java:819)(TelcordiaXml.java:161)如果我没有错,那么你正在尝试向服务器写入一些内容,对吗?是的,我必须向服务器发送一个XML并获得响应。我是通过输入输出数据流来完成的。可能存在一些权限问题,因为正如你所说的,它在本地主机中工作正常。