HTTP POST ..发送和XMLQuery以及返回文本文件作为响应 [英] HTTP POST.. Sending and XMLQuery and Returning Text file as response

查看:64
本文介绍了HTTP POST ..发送和XMLQuery以及返回文本文件作为响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



I have an issue. I am trying to access some web service through asp.net. I dont have exact code of the webservice. Input to the web service is XML query which looks something like below. output would be requested column and values in text file or excelfile.

--**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**





我试图将java代码转换为C#。在Java中它的工作完美。这是我想要做的..最后我将附上java代码





I am trying to convert java code into C#. in Java its working perfectly. Here is what i am trying to do.. At the end I will attach the java code

private void SentPostReport(string FinalURL,string postdata)
        {
            Uri uri = new Uri(FinalURL);
            WebProxy p;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            p = new WebProxy(Constants.Constants.WebProxyURL, Constants.Constants.WebProxyPort);
            GlobalProxySelection.Select = p;
            request.ContentType = "text/xml; encoding='utf-8'";
           //request.ContentType = "multipart/form-data; boundary=**eXtraSheet**";
            request.Method = "POST";
            request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback1), request);
            allDone.WaitOne();
        }





这是我调用异步方法的地方





Here is where i am calling the async method

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);
        }





和回复





and response

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内容。如下所示。





Now if i check response string.. I am receiving complete aspx contents in HTML format. as shown below.

<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;

}





任何人都可以点亮这个......



这是JAVA代码





Can anybody throw some light in this..

Here is the JAVA code

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;
    }

推荐答案

createnewreport);
var loading =
("createnewreport"); var 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 =
("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 =
("createnewreport"); var loading=


这篇关于HTTP POST ..发送和XMLQuery以及返回文本文件作为响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆