Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTP POST。。发送和XMLQuery并返回文本文件作为响应_C#_Post - Fatal编程技术网

C# HTTP POST。。发送和XMLQuery并返回文本文件作为响应

C# HTTP POST。。发送和XMLQuery并返回文本文件作为响应,c#,post,C#,Post,我有个问题。我正在尝试通过asp.net访问一些web服务。我并没有确切的网络服务代码。web服务的输入是XML查询,如下所示。输出将在文本文件或Excel文件中请求列和值 --**eXtraSheet** Content-Disposition: form-data; name="xmlquery" <?xml version="1.0" encoding="UTF-8" standalone="no"?><xmlquery> <showcolumns tru

我有个问题。我正在尝试通过asp.net访问一些web服务。我并没有确切的网络服务代码。web服务的输入是XML查询,如下所示。输出将在文本文件或Excel文件中请求列和值

--**eXtraSheet**
Content-Disposition: form-data; name="xmlquery"

<?xml version="1.0" encoding="UTF-8" standalone="no"?><xmlquery>  <showcolumns truncation="999">    <column order="1">nmclob</column>    <column order="2">oweroperategroup</column>    <column order="3">id</column>    <column order="4">name</column>    <column order="5">appquestid</column>    <column order="6">appquestname</column>    <column order="7">appquestinstanceid</column>    <column order="8">appquestinstancename</column>    <column order="9">tgo</column>    <column order="10">active</column>  </showcolumns>  <showaggregatecolumns/><groupby/><orderby/>  <filters>    <filter condition="AND" id="appquestid" leftbracket="" operator="EQUAL" rightbracket="">25299</filter>  </filters>  <fullcontentsearch/></xmlquery>
--**eXtraSheet**
这里是我调用异步方法的地方

private static void GetRequestStreamCallback1(IAsyncResult asynchronousResult)
        {
            HttpWebRequest request1 = (HttpWebRequest)asynchronousResult.AsyncState;

            Stream postStream = request1.EndGetRequestStream(asynchronousResult);
            byte[] bytearray = Encoding.UTF8.GetBytes(Constants.Constants.PostdataString.ToString());
            postStream.Write(bytearray, 0, Constants.Constants.PostdataString.Length);
            postStream.Close();

            // Start the asynchronous operation to get the response
            request1.BeginGetResponse(new AsyncCallback(GetResponseCallback), request1);
        }
及回应

  private static void GetResponseCallback(IAsyncResult asynchronousResult)
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

            // End the operation
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse);
            string responseString = streamRead.ReadToEnd();
            // Close the stream object
            streamResponse.Close();
            streamRead.Close();

            // Release the HttpWebResponse
            response.Close();

            allDone.Set();
        }
现在,如果我检查响应字符串。。我正在收到完整的HTML格式的aspx内容。如下图所示

<LINK href="custom/css/flexiblereporting.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="/js/prototype1.5.js"></script>
<script type="text/javascript" src="/js/ZeroClipboard.js"></script>
<script type="text/javascript" src="/js/genericclipboardcopy.js"></script>

<script>

document.title="Flexible Reporting";


function selectAll(list, el){
   //alert(list);
   value=el.checked;

   //var check=document.getElementById(id);
   //check.checked=true;
   //check.checked=false;

   while(list.indexOf("|") != -1 && list.length!=1){
    id=list.substring(0,list.indexOf("|"));
    //alert(id);
    if(value==true){
     var check=document.getElementById("share"+id);
     check.checked=true;
    }else{
     var check=document.getElementById("share"+id);
     check.checked=false;
    }
    list=list.substring(list.indexOf("|")+1,list.length);
   }

}

function getReport(el){

  idView=el.value;
  if(idView>-1){
   //alert(idView);
   document.location.href="uview?call=dg.reporting.custom.RHFRAlacrity&action=editreport&viewid="+idView;
  }

}

function getSummary(baseviewfilter,reportsfilter){

  var createnewreport=$("createnewreport");
  var loading=$("loading");
  createnewreport.style.display="none";
  loading.style.display="";
  document.location.href="uview?call=dg.reporting.custom.RHFRAlacrity&action=summary&reportsfilter="+reportsfilter+"&baseviewfilter="+baseviewfilter;


}

function getSummaryExtra(baseviewfilter,reportsfilter,extra){

  var createnewreport=$("createnewreport");
  var loading=$("loading");
  createnewreport.style.display="none";
  loading.style.display="";
  document.location.href="uview?call=dg.reporting.custom.RHFRAlacrity&action=summary&reportsfilter="+reportsfilter+"&baseviewfilter="+baseviewfilter+"&"+extra;

}

document.title=“灵活报告”;
功能selectAll(列表,el){
//警报(列表);
值=检查的el;
//var check=document.getElementById(id);
//check.checked=true;
//check.checked=false;
while(list.indexOf(“|”)为-1&&list.length!=1){
id=list.substring(0,list.indexOf(“|”);
//警报(id);
如果(值==true){
var check=document.getElementById(“共享”+id);
check.checked=true;
}否则{
var check=document.getElementById(“共享”+id);
check.checked=false;
}
list=list.substring(list.indexOf(“|”)+1,list.length);
}
}
函数getReport(el){
idView=el.value;
如果(idView>-1){
//警报(idView);
document.location.href=“uview?call=dg.reporting.custom.rhfralacity&action=editreport&viewid=“+idView;
}
}
函数getSummary(baseviewfilter、reportsfilter){
var createnewreport=$(“createnewreport”);
var加载=$(“加载”);
createnewreport.style.display=“无”;
loading.style.display=“”;
document.location.href=“uview?call=dg.reporting.custom.rhfracity&action=summary&reportsfilter=“+reportsfilter+”&baseviewfilter=“+baseviewfilter;
}
函数getSummaryExtra(baseviewfilter、reportsfilter、extra){
var createnewreport=$(“createnewreport”);
var加载=$(“加载”);
createnewreport.style.display=“无”;
loading.style.display=“”;
document.location.href=“uview?call=dg.reporting.custom.rhfracity&action=summary&reportsfilter=“+reportsfilter+”&baseviewfilter=“+baseviewfilter+”&“+extra;
}
有人能解释一下吗

下面是JAVA代码

private List<String> callAlacrityService(String serverURL, String postData)
    {
        boolean _verbose = false; // for debug, set to true
        boolean finalOk = false;
        ArrayList<String> al = new ArrayList<String>();
        boolean isPostRequest = goodStr(postData);
        DataOutputStream outputStream = null;
        BufferedReader datain = null;
        InputStreamReader isr = null;

        //boolean responseErrorDetected = false;
        try {
            URL url = new URL(serverURL);
            //20091014 w051646 gw-Connection timeouts 1
            // Per google, the connection shouldn;t actually connect until we get its stream,
            // so setting the timeouts here should work.
            // http://stackoverflow.com/questions/39391/does-new-url-openconnection-necessarily-imply-a-post
            HttpURLConnection ucUrl = (HttpURLConnection)url.openConnection();
            //
            if(propTimeoutConnect > 0) { ucUrl.setConnectTimeout(propTimeoutConnect); }
            if(propTimeoutRead > 0) { ucUrl.setReadTimeout(propTimeoutRead); }
            //
            ucUrl.setUseCaches(false);
            ucUrl.setDoOutput(true);

            if(isPostRequest) {
                ucUrl.setRequestMethod("POST");
                ucUrl.setRequestProperty("Content-Type", "multipart/form-data; boundary=**eXtraSheet**");
            }
            else {
                ucUrl.setRequestMethod("GET");
            }

            ucUrl.connect();

            //---------------
            // if POST, then send the data now
            if(isPostRequest) {
                outputStream = new DataOutputStream(ucUrl.getOutputStream());
                outputStream.writeBytes(postData);
                outputStream.flush();
                outputStream.close();
                outputStream = null;
            }

            //---------------
            //
            // Read response from Alacrity as separate lines, into a list
            //
            isr = new InputStreamReader(ucUrl.getInputStream());
            datain = new BufferedReader(isr);
            String line;

            if(_verbose) { LOG("  !-------------------------"); }
            // zero out our line/char counters before starting read
            int lastNumLinesRead = 0;
            int lastNumCharsRead = 0;

            while((line = datain.readLine()) != null) {
                if(_verbose) { LOG("  !" + line); }
                //
                //TODO: some errors are due to HTTP probs-- 500, 404, etc.  Can we get the resp code from response?
                //
                //-don't do this in normal case as it is a perf issue--//resptext += line;
                //
                // add line to retval array
                al.add(line);
                lastNumLinesRead++;
                if(line!=null) {
                    lastNumCharsRead+=line.length();
                }
            }
            // persist status to member vars before logging
            lastHttpRc = ucUrl.getResponseCode();
            lastHttpRcText = ucUrl.getResponseMessage();
            LOG("  !---- rc=[" + lastHttpRc + "][" + lastHttpRcText + "]-----");
            LOG("  !---- numLinesRead=[" + lastNumLinesRead + "] numCharsRead=[" + lastNumCharsRead + "]-----");
            datain.close();
            datain = null;
            isr.close();
            isr = null;
            ucUrl.disconnect();       
        }
        catch (SocketTimeoutException ste) {
            // 20091014 w051646 gw-Connection timeouts 1
            LOG("  *** SocketTimeoutException on request to Alacrity, failed connection.");
            LOG("  *** Timeouts: propTimeoutConnect=["+propTimeoutConnect+"] propTimeoutRead=["+propTimeoutRead+"]");
            LOG("  *** " + ste.getMessage());
            al = null;
            finalOk = false;
        }
        catch (MalformedURLException e) {
            LOG("MalFormedException6 " + e.getMessage());
            al = null;
            finalOk = false;
        }
        catch (Exception e) {
            LOG("Exception7a: catchall exception in alacrity connect! " +  e.getMessage());
            al = null;
            finalOk = false;
        }
        finally {
            try {
                if(outputStream!=null) { outputStream.close(); }
                if(datain!=null) {datain.close(); }
                if(isr!=null) { isr.close(); }
            }
            catch(Exception e2) {
                LOG("  ##callAlacrityService - exception in finally block! " + e2.getMessage());
            }
        }
        if(al!=null && !al.isEmpty()) {
            finalOk = true;
        }
        return al;
    }
私有列表CallaCrityService(String serverURL,String postData)
{
布尔值_verbose=false;//对于调试,设置为true
布尔finalOk=false;
ArrayList al=新的ArrayList();
布尔值isPostRequest=goodStr(postData);
DataOutputStream outputStream=null;
BufferedReader datain=null;
InputStreamReader isr=null;
//布尔值responseErrorDetected=false;
试一试{
URL=新URL(服务器URL);
//20091014 w051646 gw连接超时1
//根据谷歌的说法,在我们得到它的流之前,连接不应该真正连接,
//因此,在这里设置超时应该是可行的。
// http://stackoverflow.com/questions/39391/does-new-url-openconnection-necessarily-imply-a-post
HttpURLConnection ucUrl=(HttpURLConnection)url.openConnection();
//
如果(propTimeoutConnect>0){ucUrl.setConnectTimeout(propTimeoutConnect);}
如果(propTimeoutRead>0){ucUrl.setReadTimeout(propTimeoutRead);}
//
ucUrl.setUseCaches(false);
ucUrl.setDoOutput(true);
如果(isPostRequest){
setRequestMethod(“POST”);
setRequestProperty(“内容类型”,“多部分/表单数据;边界=**外页**”);
}
否则{
setRequestMethod(“GET”);
}
ucUrl.connect();
//---------------
//如果是POST,则立即发送数据
如果(isPostRequest){
outputStream=新的DataOutputStream(ucUrl.getOutputStream());
outputStream.writeBytes(postData);
outputStream.flush();
outputStream.close();
outputStream=null;
}
//---------------
//
//将来自Alacrity的响应作为单独的行读取到列表中
//
isr=新的InputStreamReader(ucUrl.getInputStream());
数据输入=新的缓冲读取器(isr);
弦线;
如果(_verbose){LOG(“!---------------------------”);}
//在开始读取之前,将行/字符计数器归零
int lastNumLinesRead=0;
int lastNumCharsRead=0;
而((line=datain.readLine())!=null){
如果(_verbose){LOG(!“+行);}
//
//TODO:一些错误是由于HTTP probs--500、404等引起的。我们可以从响应中获取响应代码吗?
//
//-在正常情况下不要这样做,因为这是一个性能问题--//resptext+=line;
//
//将行添加到retval数组
al.添加(行);
lastNumLinesRead++;
如果(行!=null){
lastNumCharsRead+=line.length();
}
}
//在记录之前将状态持久化到成员变量
lastHttpRc=ucUrl.getResponseCode();
lastHttpCtext=ucUrl.getResponseMessage();
日志(!----rc=[“+lastHttpRc+”][“+lastHttpCtext+”]----”;
日志(“!----numLinesRead=[”+lastNumLinesRead+“]numCharsRead=[“+lastNumCharsRead+”]----”;
datain.close();
datain=null;
isr.close();
isr=null;
ucUrl.disconnect();
}
捕捉(SocketTimeoutException ste){
//20091014 w051646 gw连接超时1
日志(“***SocketTimeoutException在请求Alacrity时,连接失败。”);
日志(“***超时:propTimeoutConnect=[”+propTimeoutConnect+“]propTimeoutRead=[“+propTimeoutRead+”]);
日志(“***”+ste.getMessage());
al=null;
finalOk=false;
}
捕获(格式错误){
日志(“格式错误”概念
private List<String> callAlacrityService(String serverURL, String postData)
    {
        boolean _verbose = false; // for debug, set to true
        boolean finalOk = false;
        ArrayList<String> al = new ArrayList<String>();
        boolean isPostRequest = goodStr(postData);
        DataOutputStream outputStream = null;
        BufferedReader datain = null;
        InputStreamReader isr = null;

        //boolean responseErrorDetected = false;
        try {
            URL url = new URL(serverURL);
            //20091014 w051646 gw-Connection timeouts 1
            // Per google, the connection shouldn;t actually connect until we get its stream,
            // so setting the timeouts here should work.
            // http://stackoverflow.com/questions/39391/does-new-url-openconnection-necessarily-imply-a-post
            HttpURLConnection ucUrl = (HttpURLConnection)url.openConnection();
            //
            if(propTimeoutConnect > 0) { ucUrl.setConnectTimeout(propTimeoutConnect); }
            if(propTimeoutRead > 0) { ucUrl.setReadTimeout(propTimeoutRead); }
            //
            ucUrl.setUseCaches(false);
            ucUrl.setDoOutput(true);

            if(isPostRequest) {
                ucUrl.setRequestMethod("POST");
                ucUrl.setRequestProperty("Content-Type", "multipart/form-data; boundary=**eXtraSheet**");
            }
            else {
                ucUrl.setRequestMethod("GET");
            }

            ucUrl.connect();

            //---------------
            // if POST, then send the data now
            if(isPostRequest) {
                outputStream = new DataOutputStream(ucUrl.getOutputStream());
                outputStream.writeBytes(postData);
                outputStream.flush();
                outputStream.close();
                outputStream = null;
            }

            //---------------
            //
            // Read response from Alacrity as separate lines, into a list
            //
            isr = new InputStreamReader(ucUrl.getInputStream());
            datain = new BufferedReader(isr);
            String line;

            if(_verbose) { LOG("  !-------------------------"); }
            // zero out our line/char counters before starting read
            int lastNumLinesRead = 0;
            int lastNumCharsRead = 0;

            while((line = datain.readLine()) != null) {
                if(_verbose) { LOG("  !" + line); }
                //
                //TODO: some errors are due to HTTP probs-- 500, 404, etc.  Can we get the resp code from response?
                //
                //-don't do this in normal case as it is a perf issue--//resptext += line;
                //
                // add line to retval array
                al.add(line);
                lastNumLinesRead++;
                if(line!=null) {
                    lastNumCharsRead+=line.length();
                }
            }
            // persist status to member vars before logging
            lastHttpRc = ucUrl.getResponseCode();
            lastHttpRcText = ucUrl.getResponseMessage();
            LOG("  !---- rc=[" + lastHttpRc + "][" + lastHttpRcText + "]-----");
            LOG("  !---- numLinesRead=[" + lastNumLinesRead + "] numCharsRead=[" + lastNumCharsRead + "]-----");
            datain.close();
            datain = null;
            isr.close();
            isr = null;
            ucUrl.disconnect();       
        }
        catch (SocketTimeoutException ste) {
            // 20091014 w051646 gw-Connection timeouts 1
            LOG("  *** SocketTimeoutException on request to Alacrity, failed connection.");
            LOG("  *** Timeouts: propTimeoutConnect=["+propTimeoutConnect+"] propTimeoutRead=["+propTimeoutRead+"]");
            LOG("  *** " + ste.getMessage());
            al = null;
            finalOk = false;
        }
        catch (MalformedURLException e) {
            LOG("MalFormedException6 " + e.getMessage());
            al = null;
            finalOk = false;
        }
        catch (Exception e) {
            LOG("Exception7a: catchall exception in alacrity connect! " +  e.getMessage());
            al = null;
            finalOk = false;
        }
        finally {
            try {
                if(outputStream!=null) { outputStream.close(); }
                if(datain!=null) {datain.close(); }
                if(isr!=null) { isr.close(); }
            }
            catch(Exception e2) {
                LOG("  ##callAlacrityService - exception in finally block! " + e2.getMessage());
            }
        }
        if(al!=null && !al.isEmpty()) {
            finalOk = true;
        }
        return al;
    }