Go code as plain text below:
unc SendClaim(w http.ResponseWriter, r *http.Request) {
// strEcho := "Halo"
servAddr := tcpAddress
type Resp struct {
Status string `json:"status"`
Reply string `json:"reply"`
}
type Claim struct {
ClaimInfo string `json:"claiminfo"`
}
var params Claim
erx := json.NewDecoder(r.Body).Decode(¶ms)
if erx != nil {
http.Error(w, erx.Error(), http.StatusBadRequest)
fmt.Println("Error occurs here")
log.Printf(erx.Error())
return
}
fmt.Printf("Claims: %s", params)
// policy := params.CardNo //r.FormValue("cardno")
// log.Println("policy # ", policy)
tcpAddr, err := net.ResolveTCPAddr("tcp", servAddr)
if err != nil {
println("ResolveTCPAddr failed:", err.Error())
respondWithError(w, http.StatusBadRequest, err.Error())
return
}
data := params.ClaimInfo
// printr := r.FormValue("printer")
fmt.Println(data)
conn, err := net.DialTCP("tcp", nil, tcpAddr)
if err != nil {
println("Dial failed:", err.Error())
respondWithError(w, http.StatusBadRequest, err.Error())
return
}
_, err = conn.Write([]byte(data))
if err != nil {
println("Write to server failed:", err.Error())
respondWithError(w, http.StatusBadRequest, err.Error())
return
}
reply := make([]byte, 1024)
_, err = conn.Read(reply)
if err != nil {
println("Write to server failed:", err.Error())
respondWithError(w, http.StatusBadRequest, err.Error())
return
}
resp := Resp{}
println("reply from server=", string(reply))
resp.Status = "response"
resp.Reply = string(reply)
respondWithJSON(w, http.StatusOK, resp)
conn.Close()
}
On Tuesday, July 2, 2024 at 8:28:54 PM UTC-4 Hugh Myrie wrote:
> When I change the %s to %q in the print function I see the special
> characters in their Hexadecimal representations.
>
> See below:
>
> 0011020240702\x1d02017580000001030085245467021.00Y00000000000050072
> 2024070200000000000000000\x1cDG\x1cDI00\x1cE700000000\x1cG1200
> \x1cG2X \x1cG310\x1cG4E79 \x03
>
>
> I am using the original code (JSON).
>
> How do I then change them back to the actual characters?
>
> On Tuesday, July 2, 2024 at 7:15:36 PM UTC-4 Ian Lance Taylor wrote:
>
>> 1) Please send Go code as plain text, not as an image. Anybody can read
>> plain text. Images are hard to read. Thanks.
>>
>> 2) What do you see if you change the %s to %q in the fmt.Printf call?
>>
>> Ian
>>
>> On Tue, Jul 2, 2024 at 3:40 PM Hugh Myrie <[email protected]> wrote:
>>
>>> The original Go function is shown below. Initially, a JSON-encoded
>>> string is sent from the client. The first print function is used to view
>>> the output after decoding.
>>>
>>>
>>> func SendClaim(w http.ResponseWriter, r *http.Request) {
>>> // strEcho := "Halo"
>>> servAddr := tcpAddress
>>>
>>> type Resp struct {
>>> Status string `json:"status"`
>>> Reply string `json:"reply"`
>>> }
>>> type Claim struct {
>>> ClaimInfo string `json:"claiminfo"`
>>> }
>>>
>>> var params Claim
>>>
>>> erx := json.NewDecoder(r.Body).Decode(¶ms)
>>> if erx != nil {
>>> http.Error(w, erx.Error(), http.StatusBadRequest)
>>> fmt.Println("Error occurs here")
>>> log.Printf(erx.Error())
>>> return
>>> }
>>> fmt.Printf("Claims: %s \n", params)
>>> // policy := params.CardNo //r.FormValue("cardno")
>>> // log.Println("policy # ", policy)
>>>
>>> tcpAddr, err := net.ResolveTCPAddr("tcp", servAddr)
>>> if err != nil {
>>> println("ResolveTCPAddr failed:", err.Error())
>>> respondWithError(w, http.StatusBadRequest, err.Error())
>>> return
>>> }
>>>
>>> data := params.ClaimInfo
>>> // printr := r.FormValue("printer")
>>>
>>> fmt.Println(data)
>>> conn, err := net.DialTCP("tcp", nil, tcpAddr)
>>> if err != nil {
>>> println("Dial failed:", err.Error())
>>> respondWithError(w, http.StatusBadRequest, err.Error())
>>> return
>>> }
>>>
>>> _, err = conn.Write([]byte(data))
>>> if err != nil {
>>> println("Write to server failed:", err.Error())
>>> respondWithError(w, http.StatusBadRequest, err.Error())
>>> return
>>> }
>>>
>>> reply := make([]byte, 1024)
>>>
>>> _, err = conn.Read(reply)
>>> if err != nil {
>>> println("Write to server failed:", err.Error())
>>> respondWithError(w, http.StatusBadRequest, err.Error())
>>> return
>>> }
>>>
>>> resp := Resp{}
>>> println("reply from server=", string(reply))
>>> resp.Status = "response"
>>> resp.Reply = string(reply)
>>>
>>> respondWithJSON(w, http.StatusOK, resp)
>>>
>>> conn.Close()
>>> }
>>>
>>>
>>> On Tuesday, July 2, 2024 at 9:28:01 AM UTC-4 Hugh Myrie wrote:
>>>
>>>> Copying the result to notepad confirms the missing special characters..
>>>>
>>>> I'll try your suggestion.
>>>>
>>>> Thanks.
>>>>
>>>>
>>>> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>
>>>> Virus-free.www.avg.com
>>>> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>
>>>> <#m_-5532545046707713222_m_7810203444138361032_m_3329966587656473292_m_4334311486301273828_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>
>>>> On Tue, Jul 2, 2024 at 8:33 AM 'Dan Kortschak' via golang-nuts <
>>>> [email protected]> wrote:
>>>>
>>>>> On Mon, 2024-07-01 at 12:03 -0700, Hugh Myrie wrote:
>>>>> > I am trying to preserve special characters (group separators and
>>>>> > field separators) when reading the request body from a POST request.
>>>>> >
>>>>> > When I do a dumpRequest I am able to see the special characters (Hex
>>>>> > Format, for example: \x1c or \x03). I am sending the data from the
>>>>> > client as text/plain.
>>>>> >
>>>>> > I have tried sending the data as JSON and using the decoder in Go. I
>>>>> > have also tried using Base64 and decoding in go accordingly. I have
>>>>> > tried json.unmarshal to decode the incoming JSON data. However, in
>>>>> > every instance the special characters are removed.
>>>>> >
>>>>> > I need the special characters to be preserved so I can send the data
>>>>> > for further processing. I need the special characters not the
>>>>> > hexadecimal representation.
>>>>> >
>>>>> > I am able to see the actual data being sent to the Go server. I also
>>>>> > tried encoding the data from the client side.
>>>>> >
>>>>> > Your help would be greatly appreciated.
>>>>>
>>>>> This looks to be working as expected.
>>>>> https://go.dev/play/p/fqLPbsMKaOm
>>>>>
>>>>> How are you seeing the bytes being missing?
>>>>>
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "golang-nuts" group.
>>>>> To unsubscribe from this topic, visit
>>>>> https://groups.google.com/d/topic/golang-nuts/8cLWTdxHQCI/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> [email protected].
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/golang-nuts/9cf1e4d31b68f7601839a450e1a9aa572458e756.camel%40kortschak.io
>>>>> .
>>>>>
>>>>
>>>>
>>>> --
>>>> http://www.jaxtr.com/blessed_hope
>>>>
>>> --
>>>
>> You received this message because you are subscribed to the Google Groups
>>> "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/golang-nuts/6fd2520e-a7e3-43ed-89d5-dc96419d8a89n%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/golang-nuts/6fd2520e-a7e3-43ed-89d5-dc96419d8a89n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/9a83d8b0-b26a-4c24-9923-28bf6fa79254n%40googlegroups.com.