2014-07-07 110 views
0

我的問題是,當我使用oracle 11g UTL_HTTP包進行Web請求時,在我的參數集中,我發送了3個參數來恢復平穩的Web服務,但是在一個參數的Web服務中只收回了一部分數據。在數據參數中只能收回到EW185我的代碼中的錯誤是什麼?UTL_HTTP http請求

我的代碼,

  pdata:=null; 

    pdata:='<?xml version="1.0"?><XML> 
    <PARTS> 
    <PART> 
    <PART_NO>AD3U1600W4G11-B</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>RAM ADATA DDR3 4GB</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>E209329</PART_NO> 
    <PART_QTY>2</PART_QTY> 
    <PART_NAME>SATA Cables(Lian Feng)</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>K100</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>Key Board</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>M100</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>Mouse</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>EWCS4X6</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>Packaging Stickers</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>EWCBMT</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>Carton Boxes MT</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>EW185</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>MONITOR EZY 18.5&quot;</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>i5-3470</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>Processor Intel i5</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>H61H2-M</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>Mother board (ECS)</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>DT01ACA100</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>HDD TOSHIBA 1TB</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>DESK-ProSE</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>DESKTOP Product Serial Label</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>PN502</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>Casing with power supply</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>FQC-05646</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>WINDOWS 8 PRO LICENSES</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>Q101</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>COOLING FAN(Q101)</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>YHS-100M</PART_NO> 
    <PART_QTY>2</PART_QTY> 
    <PART_NAME>CABLE TIE</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>EWRL25X60</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>E-WIS RATING LABEL</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>HD5450</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>VGA Cards 1GB</PART_NAME> 
    </PART> 
    <PART> 
    <PART_NO>SH-224</PART_NO> 
    <PART_QTY>1</PART_QTY> 
    <PART_NAME>ODD DVD, SATA</PART_NAME> 
    </PART> 
    </PARTS> 
    <CONFIG_NO>HT-39</CONFIG_NO><MODEL_NO>EWIS PRO 2400</MODEL_NO><MODEL_NAME>EWIS PRO 2400 MT PC</MODEL_NAME></XML>'; 
    l_param_list := '[email protected]&P=password&data='||pdata; 


    l_param_list:=replace(l_param_list,';',''); 


    l_http_request := UTL_HTTP.begin_request ('loclahost/app/admin/index.php /api/serial/put_config' , 'POST' , 'HTTP/1.1'); 



    UTL_HTTP.set_header(l_http_request, 'Content-Type', 'application/x-www-form-urlencoded'); 
    UTL_HTTP.set_header(l_http_request, 'Content-Length', LENGTH(l_param_list)); 

    UTL_HTTP.write_text(l_http_request, l_param_list); 


    l_http_response := UTL_HTTP.get_response(l_http_request); 

    UTL_HTTP.read_text(l_http_response, l_response_text); 

    UTL_HTTP.end_response(l_http_response); 

回答

0

我解決了這個。錯誤是在XML代碼中,有一個操作系統轉換爲特殊字符在ITEM否,這裏它的雙引號「。提交此請求時XML部分截斷此轉換所在的位置。爲了防止這種情況,我必須刪除特殊字符XML

under pdata XML string <PART_NAME>MONITOR EZY 18.5&quot;</PART_NAME> this line cause  
error