Этот вопрос является продолжением моего previous question относительно передачи HTTP-пакетов в ColdFusion. Теперь, я использовал java.net.URL
читать куски, и это то, что я пробовал:ColdFusion - HTTP chunk missing first character
<cfset local.objURL = createObject("java", "java.net.URL")
.init(javaCast("string", "https://test.com/abc.xml"))>
<!--- Open Connection --->
<cfset local.objConnection = local.objURL.openConnection()>
<!--- Input Stream --->
<cfset local.inputStream = local.objConnection.getInputStream()>
<!--- Read Chunks --->
<cfloop condition="true">
<!--- Get Chunk Length --->
<cfset local.chunkLength = local.inputStream.read()>
<cfif local.chunkLength LT 0>
<cfbreak>
</cfif>
<!--- Byte Array --->
<cfset local.chunk = getByteArray(local.chunkLength)>
<cfset local.offset = 0>
<!--- Read Chunk Data --->
<cfloop condition="local.offset LT local.chunkLength">
<cfset local.bytesRead = local.inputStream.read(local.chunk, local.offset, local.chunkLength - local.offset)>
<cfif local.bytesRead LT 0>
<cfbreak>
</cfif>
<cfset local.offset += local.bytesRead>
</cfloop>
<!--- Chunk --->
<cfdump var="#charsetEncode(local.chunk, 'utf-8')#"><br />
</cfloop>
Используя код выше, я могу прочитать данные, но проблему я обращенную в том, что первый символ каждый фрагмент является то отсутствует,
Первый Chunk это:
<?xml version="1.0" encoding="utf-8" ?> <root>
, но я только получение?xml version="1.0" encoding="utf-8" ?> <root>
есть предложения?
Спасибо за указание. Это первый раз, когда я имею дело с читателем чанка, и я больше копаю в нем. Да, «Transfer-Encoding» является «chunked». – Beginner
Вы взглянули на весь контент вашего входного потока? Я подозреваю, что java '' URLConnection'' обрабатывает http chunking внутри, что означает, что вам не нужно это решать. Это объясняет, почему в вашем коде нет «длины» куска. – f1sh
Да, да. Спасибо :) – Beginner