UTL_HTTP http请求

时间:2014-07-07 04:33:35

标签: oracle11g

我的问题是,当我使用oracle 11g UTL_HTTP程序包发出Web请求时,在我的参数集中,我发送了3个参数来自restful web服务,但是在一个param的web服务中只返回部分数据。在数据参数中只回溯到EW185只有我的代码中的错误是什么?

我的代码,

           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 := 'U=admin@admin.com&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);

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。错误在XML代码中,在ITEM No中有特殊字符的操作系统转换,这里是双引号&#34;。提交此请求时,XML部分截断此转换所在的位置。为了防止这种情况,我必须删除XML中的特殊字符

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